小编Jac*_*b K的帖子

如何调整私人班级的方法

我有一个私有类(在.m中声明和定义)作为对不同类的实现的补充,恰好在内部使用该私有类.

我想调整那个私人班级的方法之一.

我定义了一个类别,并按照惯例做了:

+(void)load 
{
    Method original, swizzled;

    original = class_getInstanceMethod(objc_getClass("SomePrivateClass"), @selector(somePrivateMethod:));
    swizzled = class_getInstanceMethod(self, @selector(swizzled_somePrivateMethod:));
    method_exchangeImplementations(original, swizzled); 
}
Run Code Online (Sandbox Code Playgroud)

问题是我的实现显然对这个私有类一无所知,而self指的是我要添加类别的类,无论哪个类都可能.因此,我无法调用原始实现,并且通常使用私有类.

解决这个问题的正确方法是什么?

runtime swizzling ios

9
推荐指数
1
解决办法
3159
查看次数

共享扩展状态栏样式

创建全屏共享扩展时,有没有办法控制状态栏?

我试过了:

  • 基于视图控制器的状态栏+ preferredStatusBarStyle
  • 状态栏样式
  • 状态栏最初是隐藏的

似乎没有什么影响状态栏,它只是从打开共享扩展的视图继承而来.有解决方法还是设计如何运作?

objective-c ios ios8

8
推荐指数
1
解决办法
1771
查看次数

iOS8扩展NSItemProvider通过ALAssetsLibrary UIImage到ALAsset

我有一个支持图像的共享扩展.一切正常,我从项目提供商处获取图像,如下所示:

if([imageItemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeImage])
{
    [imageItemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeImage options:nil completionHandler:^(UIImage *image, NSError *error)
     {
         if(image)
         {
             // do smth with the image here
         }
     }];
}
Run Code Online (Sandbox Code Playgroud)

问题是我想通过ALAssetsLibrary访问图像信息,因为loadItemForTypeIdentifier直接返回UIImage,所以我没有它的URL.知道如何抓取图片网址吗?

uiimage ios alassetslibrary ios8 ios8-extension

2
推荐指数
1
解决办法
1761
查看次数

有没有办法在不持久化的情况下修改RLMObject?

我对Realm很陌生,考虑在特定项目中从CoreData堆栈转而支持它,因为我大多只需要本地存储 - Realm至少在纸面上感觉像是一个完美的匹配.我面临的问题是,我无法找到一种方法来修改从RLMResults检索的子类RLMObject而无需写入事务.我确实理解它的来源,但在我的具体情况下,这是一个问题 - 用户可以自由修改对象,然后保存或放弃更改.如果用户取消编辑并且所有变通办法对我来说都很脏,那么让Realm保持最新状态然后回滚是不对的.有没有一种聪明的方法可以自由地修改对象,只有当用户决定保存他的更改后才能创建createOrUpdate?

realm

2
推荐指数
1
解决办法
680
查看次数