Dan*_*ani 0 objective-c retain
@propert(保留)做什么?它实际上并没有通过我的测试保留我的对象:
id obj = getObjectSomehow();
NSLog(@"%d", [obj retainCount]);
propertyWithRetain = obj;
NSLog(@"%d", [obj retainCount]);
// output:
// 1
// 1
Run Code Online (Sandbox Code Playgroud)
如何创建一个真正保留对象的属性?
你没有在那里使用你的财产,这就是为什么它不保留!
试试这个 :
id obj = getObjectSomehow();
NSLog(@"%d", [obj retainCount]);
self.propertyWithRetain = obj; // Note the self. :)
NSLog(@"%d", [obj retainCount]);
Run Code Online (Sandbox Code Playgroud)
使用self.将使用该属性.只使用变量名称不会.
特别为@bbum编辑(他在评论中提出了非常公平的观点)
不要依赖使用retainCount - 你不知道还有什么保留了你的对象,你不知道其中一些保留是否实际上是预定的自动释放,所以它通常是一个误导性的数字:)