我有一个私有类(在.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指的是我要添加类别的类,无论哪个类都可能.因此,我无法调用原始实现,并且通常使用私有类.
解决这个问题的正确方法是什么?
创建全屏共享扩展时,有没有办法控制状态栏?
我试过了:
似乎没有什么影响状态栏,它只是从打开共享扩展的视图继承而来.有解决方法还是设计如何运作?
我有一个支持图像的共享扩展.一切正常,我从项目提供商处获取图像,如下所示:
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.知道如何抓取图片网址吗?
我对Realm很陌生,考虑在特定项目中从CoreData堆栈转而支持它,因为我大多只需要本地存储 - Realm至少在纸面上感觉像是一个完美的匹配.我面临的问题是,我无法找到一种方法来修改从RLMResults检索的子类RLMObject而无需写入事务.我确实理解它的来源,但在我的具体情况下,这是一个问题 - 用户可以自由修改对象,然后保存或放弃更改.如果用户取消编辑并且所有变通办法对我来说都很脏,那么让Realm保持最新状态然后回滚是不对的.有没有一种聪明的方法可以自由地修改对象,只有当用户决定保存他的更改后才能创建createOrUpdate?