如果我使用ARC,如何在不泄漏的情况下使用performSelector:
调用以下方法?
- (SomeClass *)test {
return [[SomeClass alloc] init];
}
如果我使用类似下面的内容,我会收到警告,我可能会引入泄漏,因为ARC不知道该怎么做,因为选择器是以编程方式生成的。
[object performSelector:selector];
答案 0 :(得分:2)
在这种特殊情况下,你很好。警告告诉您编译器无法判断-performSelector:
是否将返回+0或+1对象,编译器将继续假设它是+0对象。因此,您是否泄漏取决于所谓的实际方法。在这种情况下,您的方法是-test
,根据命名规则返回+0对象。因此,使用-performSelector:
调用此方法不会泄漏。