MRC
关于NSString,retainCount为-1
C方法中含有Copy的方法名, 都要释放 例如CFRealse(ref)
字符串常量,因为one
为字符串常量,系统不会回收,也不会对其作引用计数,即使我们对test1
做任何retain或release。
NSObject *obj = [[NSObject alloc] init];
ojb 的 引用计数为 1 (默认,相当于retain)
[obj retain]; 引用计数+1
[obj release]; 引用计数-1
[obj autorelease]; NSRunLoop运行完毕之后引用计数就会自动-1
对于对象属性
@interface MRCObject ()
@property (nonatomic, strong) MyObject *myObj;
@end
在没有被赋值时, 引用计数为0
如果是:self.myObj = [[MyObject alloc] init];
在这一句之后对象的引用计数为2
如果是:self.myObj = [[[MyObject alloc] init] retain];
在这一句之后对象引用计数为3
相当于:
MyObject *obj = [[MyObject alloc] init]; //+1
self.myObj = obj; // + 1
[self.myObj retain];// +1 共3
// MRC setter - (void)setName:(NSString *)name { [_name release]; _name = [name retain]; }