MRC

作者: 老魏313 | 来源:发表于2018-03-22 08:30 被阅读0次

创建 mrc 工程

  1. 正常创建一个项目
  2. 选中工程文件
  3. 选中TARGETS中选中需要更改的项目
  4. 选中bulidSeting
  5. 在搜索框中搜索“auto”
  6. 将Automatic Reference Counting 将YES改为NO
mrc工程.png

字符串 或 基本数据类型

    // 数组在初始化的时候 retainCount 为 1 
    // retain 后 retainCount + 1  
    NSMutableArray *arr = [[NSMutableArray array] retain];

    NSString *str = [NSString stringWithFormat:@"abc  "];
    [str retain];
    [arr addObject:str];
    // 输出为 18446744073709551615  即 (2^64 - 1)
    NSLog(@"%@%lu", str,[str retainCount]);
    // 输出为 -1
    NSLog(@"%@%d", str, [str retainCount]);
    // 输出为2
    NSLog(@"###%d",[arr retainCount]);
    
    [str retain];
    [str release];
    [str release];
    // 输出为-1
    NSLog(@"%@%d", str, [str retainCount]);

    [arr removeAllObjects];
    // 输出为 -1
    NSLog(@"%@%d", str, [str retainCount]);
    // 输出为 2
    NSLog(@"33333  %d",[arr retainCount]);
结果1.png

对象

    NSMutableArray *arr = [[NSMutableArray array] retain];
    // 对象 初始化  retainCount 为 1
    NSObject *obj = [[NSObject alloc] init];
    //  retainCount  + 1
    [obj retain];
    // retainCount  + 1
    [arr addObject:obj];
    // 3
    NSLog(@"%lu" ,[obj retainCount]);
    // 3
    NSLog(@"%d", [obj retainCount]);
    // 2
    NSLog(@"###%d",[arr retainCount]);
    // retainCount  + 1
    [obj retain];
    // retainCount  - 1
    [obj release];
    // retainCount  - 1
    [obj release];
    // 2
    NSLog(@"%d", [obj retainCount]);
    // retainCount  - 1
    [arr removeAllObjects];
    // 1
    NSLog(@"%d", [obj retainCount]);
    // 2
    NSLog(@"33333  %d",[arr retainCount]);
结果2.png

相关文章

网友评论

      本文标题:MRC

      本文链接:https://www.haomeiwen.com/subject/nzknqftx.html