在Objective C ARC中,[[[MYObject alloc] init] callSomeMethod]安全吗?即使我没有分配变量,它会被释放吗?
答案 0 :(得分:1)
是的,它会。如果您对此感到紧张,则很容易验证。只需把NSLog(@“它做了!”);在该对象的-dealloc方法中并检查以确保它记录。
答案 1 :(得分:0)
如果您在callingSomeMethod
返回后不需要该对象生效,则可以安全地执行[[[MyObject alloc] init] callingSomeMethod]
。
如果您需要在callingSomeMethod
返回后生成对象,那么您的程序需要在callingSomeMethod
返回之前创建对它的强引用。例子:
callingSomeMethod
将对象设置为NSTimer
的目标,那么您是安全的,因为NSTimer
会保留其目标。callingSomeMethod
仅将对象设置为UITableView
的委托,那么您 不安全,因为UITableView
不 >保留其代表。在这种情况下,您还必须在其他位置创建对该对象的强引用。