目标C ARC释放而不分配变量

时间:2012-02-17 04:26:31

标签: objective-c ios automatic-ref-counting

在Objective C ARC中,[[[MYObject alloc] init] callSomeMethod]安全吗?即使我没有分配变量,它会被释放吗?

2 个答案:

答案 0 :(得分:1)

是的,它会。如果您对此感到紧张,则很容易验证。只需把NSLog(@“它做了!”);在该对象的-dealloc方法中并检查以确保它记录。

答案 1 :(得分:0)

如果您在callingSomeMethod返回后不需要该对象生效,则可以安全地执行[[[MyObject alloc] init] callingSomeMethod]

如果您需要在callingSomeMethod返回后生成对象,那么您的程序需要在callingSomeMethod返回之前创建对它的强引用。例子:

  • 如果callingSomeMethod将对象设置为NSTimer的目标,那么您是安全的,因为NSTimer会保留其目标。
  • 如果callingSomeMethod仅将对象设置为UITableView的委托,那么您 不安全,因为UITableView >保留其代表。在这种情况下,您还必须在其他位置创建对该对象的强引用。