xufengyuan

1.copy与内存管理

  • 浅拷贝

    • 原对象引用计数器+1
    • 必须对原对象进行释放
char *cstr = "this is a c string";
NSString *str1 = [[NSString alloc] initWithUTF8String:cstr];
NSLog(@"str = %lu", [str1 retainCount]);
NSString *str2 = [str1 copy];
NSLog(@"str = %lu", [str1 retainCount]);
[str2 release];必须做一次release
  • 深拷贝

    必须释放新对象

char *cstr = "this is a c string";
NSString *str1 = [[NSString alloc] initWithUTF8String:cstr];
NSLog(@"str = %lu", [str1 retainCount]);
NSMutableString *str2 = [str1 mutableCopy];
NSLog(@"str = %lu", [str1 retainCount]);
[str2 release]; // 必须做一次release
[str1 release];
 

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-01-01
  • 2022-01-01
  • 2022-01-21
  • 2021-10-17
  • 2022-02-08
  • 2021-08-01
  • 2021-06-25
猜你喜欢
  • 2021-04-12
  • 2021-12-10
  • 2022-12-23
  • 2021-07-17
  • 2022-12-23
  • 2021-11-29
相关资源
相似解决方案