在ARC下保留实例变量的等价物

tac*_*cos 0 memory-management objective-c ios restkit automatic-ref-counting

我正在使用RestKit开发RESTful应用程序.我有一个实际处理请求的包装器对象,甚至可以作为delegatefor RKObjectManager.我遇到了一个与ARC如何处理实例变量并保留它们有关的问题,我很清楚我不明白ARC是如何工作的.

所以当我这样做时,它会失败(与发送到解除分配的实例的消息有关的错误)

MyTestClient *testClient = [[MyTestClient alloc] init];

但是当我宣布一个房产并做到这一点时,一切都很好:

self.testClient = [[MyTestClient alloc] init];

根据我的理解,在ARC下,实例变量始终strong是默认的,但它的生命周期是声明它的方法的范围.

既然我不能做[testClient retain],我唯一的选择是把它作为财产吗?

wby*_*ung 5

默认情况下,您的变量很强,并且会保留在其范围内.因此,在第一个示例中,对象将仅保留到函数结束.在第二个中,由于你有一个实例变量,它将被保留,直到拥有对象被释放(在这种情况下可能足够长).您最好的选择是将其作为属性,但您也可以将其设为实例变量.在这种情况下,它会为你做同样的事情.

考虑它的一个简单方法是你需要一个强大的指针指向一个对象,直到你不再需要它为止.