3

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

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

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

[object performSelector:selector];
4

1 回答 1

2

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

于 2012-12-13T03:25:58.467 回答