'myObj = [[[[MyClass alloc] init] autorelease]的效果保留];'?

fil*_*ipe 6 iphone facebook memory-management objective-c

我刚刚下载了Facebook iOS SDK,我注意到在SDK附带的示例代码中,只要它创建了一个Facebook类的实例,它就像这样:

_facebook = [[[[Facebook alloc] init] autorelease] retain];
Run Code Online (Sandbox Code Playgroud)

where _facebook是调用对象的成员变量(即不是局部变量).

任何人都可以确切地解释自动释放然后保留它的重点是什么?

bbu*_*bum 13

除了消耗一些周期和内存之外,它实际上没有做任

或者,更确切地说,在正确编写的应用程序中,它什么都不做.在错误编写的应用程序中,它可能会通过延长_facebook对象的生命周期来掩盖错误.但是,这不是一个真正的解决方案.

我在http://github.com/facebook/facebook-ios-sdk/blob/master/sample/DemoApp/Classes/DemoAppViewController.m中找到了类似的代码行. 如果那就是你所指的那个,是的,它是胡说八道.

  • 另一种理论认为,它是没有理解的记忆症状."要创建一个对象,我必须编写[[[ClassName alloc] init] autorelease]; 抓住它; 我必须保留它."只有声明的作者才知道. (8认同)