Tag: objective c runtime

在arc下使用objc_getClassList

有没有人设法使用下弧的objc_getClassList,closures文件的弧closures? 根本的问题是其中一个参数是C类指针的数组。

如何在NSOperation中实现一个NSRunLoop

我张贴这个问题,因为我已经看到了很多关于这个话题的困惑,因此我花了几个小时debuggingNSOperation子类。 问题是,当你执行asynchronous方法时,NSOperation不会对你有太大的帮助,在asynchronouscallback完成之前,这些方法实际上并不完整。 如果NSOperation本身就是callback委托,那么由于在不同线程上发生的callback,可能不足以正确完成操作。 比方说,你在主线程,你创build一个NSOperation并将其添加到一个NSOperationQueue NSOperation内的代码触发一个asynchronous调用,调用回AppDelegate或视图控制器上的某些方法。 你不能阻止主线程或用户界面将locking,所以你有两个select。 1)创build一个NSOperation并将其添加到NSOperationQueue中,签名如下: [NSOperationQueue addOperations:@ [myOp] waitUntilFinished:?] 祝你好运。 asynchronous操作通常需要一个runloop,所以它不会工作,除非你inheritanceNSOperation或者使用一个块,但是如果你必须在callback完成的时候告诉它“完成”NSOperation,那么块就不会工作。 所以…你用类似于下面的东西来NSOperation的子类,所以callback可以告诉操作完成后: //you create an NSOperation subclass it includes a main method that //keeps the runloop going as follows //your NSOperation subclass has a BOOL field called "complete" -(void) main { NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; //I do some stuff which has async […]

拦截Objective-C在子类中委托消息

我有一个UIScrollView的子类,我需要在内部响应滚动行为。 然而,viewcontroller仍然需要听滚动委托callback,所以我不能彻底窃取我的组件内的委托。 有没有办法保留名为“委托”的属性,只听信息发送,否则以某种方式内部劫持委托属性和运行一些代码后向外转发消息?

在Xcode 7中更改+加载方法的顺序

我发现Xcode 7(版本7.0(7A220))在unit testing中改变了调用类和类的+load方法的顺序。 如果属于testing目标的类别实现了一个+load方法,那么现在在最后调用该类时,该类的实例可能已经被创build和使用。 我有一个AppDelegate ,它实现+load方法。 AppDelegate.m文件还包含AppDelegate (MainModule)类别。 此外,还有一个unit testing文件LoadMethodTestTests.m ,它包含另一个类别 – AppDelegate (UnitTest) 。 这两个类别也实现+load方法。 第一类属于主要目标,第二类属于testing目标。 码 我做了一个小testing项目来演示这个问题。 这是一个空的默认Xcode一个视图项目,只有两个文件被更改。 AppDelegate.m: #import "AppDelegate.h" @implementation AppDelegate +(void)load { NSLog(@"Class load"); } – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSLog(@"didFinishLaunchingWithOptions"); return YES; } @end @interface AppDelegate (MainModule) @end @implementation AppDelegate (MainModule) +(void)load { NSLog(@"Main Module +load"); } @end […]

在Objective-C中,如何在运行时查找string常量?

我公司开发了一个广告SDK,用于调解其他广告networking。 在运行时,它使用NSClassFromString检查其他广告networking是否存在,并在这些类消息存在时发送它们。 这对Objective-C对象工作正常,但是我怎样才能在运行时加载string常量? 在这种情况下,我想检查一个只能通过string常量获得的SDK版本( extern NSString* VungleSDKVersion; )