安全地使用performSelector:使用返回已分配对象的方法

时间:2012-12-13 02:45:17

标签: objective-c automatic-ref-counting

如果我使用ARC,如何在不泄漏的情况下使用performSelector:调用以下方法?

- (SomeClass *)test {
    return [[SomeClass alloc] init];
}

如果我使用类似下面的内容,我会收到警告,我可能会引入泄漏,因为ARC不知道该怎么做,因为选择器是以编程方式生成的。

[object performSelector:selector];

1 个答案:

答案 0 :(得分:2)

在这种特殊情况下,你很好。警告告诉您编译器无法判断-performSelector:是否将返回+0或+1对象,编译器将继续假设它是+0对象。因此,您是否泄漏取决于所谓的实际方法。在这种情况下,您的方法是-test,根据命名规则返回+0对象。因此,使用-performSelector:调用此方法不会泄漏。