A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhudong100 中级黑马   /  2015-12-11 21:52  /  631 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. #import <Foundation/Foundation.h>
  2. #import "Person.h"
  3. int main(int argc, const char * argv[]) {
  4.     @autoreleasepool {
  5.         //@property的参数copy的用法
  6.         NSMutableString *str = [NSMutableString string];
  7.         [str appendString:@"秦不来"];
  8.         NSLog(@"str.add = %p,str.ratainCount = %lu",str,str.retainCount);
  9.         Person *p = [Person new];
  10.         p.name = str;
  11.         NSLog(@"str.add = %p,str.ratainCount = %lu",str,str.retainCount);
  12.         NSLog(@"p.name.add = %p,p.name.ratainCount = %lu",p.name,p.name.retainCount);
  13.     }
  14.     return 0;
  15. }
复制代码

上面代码运行的结果:
2015-12-11 21:44:18.848 Copy和内存管理[742:20439] str.add = 0x100100760,str.ratainCount = 1
2015-12-11 21:44:18.849 Copy和内存管理[742:20439] str.add = 0x100100760,str.ratainCount = 1
2015-12-11 21:44:18.849 Copy和内存管理[742:20439] p.name.add = 0x100503430,p.name.ratainCount = 1
结果分析:copy过后,内存中重新分配了内存空间用来存储str 的副本,因此@property的参数copy实现的是深复制。

1 个回复

倒序浏览
赞赞赞赞赞赞
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马