MRC

 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]; 
}
原文地址:https://www.cnblogs.com/apem/p/4587682.html