retain strong 和 copy 讨论,有建议的的童鞋请留言
2015-01-06 18:44
246 查看
总结下我的理解:
strong weak是ARC引入的,strong相当于retain,但是对于有的类型,例如NSString,则使用strong相当于使用copy
这样直接用strong就可以直接处理retain和strong的情况了。
weak相当于assign,但是比后者多一点:对象被干掉时会将weak引用设为nil,而对nil发送消息都不会导致崩溃
否则weak引用为野指针,会出现问题
这里说strong 有copy的功能是错误的哦。实验例子
@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
NSString *retainStr;
NSString *copStr;
NSString *strongStr;
}
@property (retain, nonatomic) NSString *retainStr;
@property (strong, nonatomic) NSString *strongStr;
@property (copy, nonatomic) NSString *copStr;
@end
NSMutableString *newStr = [NSMutableString stringWithFormat:@"abcd"];
self.retainStr = newStr;
self.strongStr = newStr;
self.copStr = newStr;
[newStr appendString:@"123"];
NSLog(@"retain sting:%@", self.retainStr);
NSLog(@"strong string:%@", self.strongStr);
NSLog(@"copy string:%@", self.copStr);
输出结果:
2014-05-02 13:31:17.660 TestMultipleThreadDownload[552:60b] retain sting:abcd123
2014-05-02 13:31:17.662 TestMultipleThreadDownload[552:60b] strong string:abcd123
2014-05-02 13:31:17.663 TestMultipleThreadDownload[552:60b] copy string:abcd
strong weak是ARC引入的,strong相当于retain,但是对于有的类型,例如NSString,则使用strong相当于使用copy
这样直接用strong就可以直接处理retain和strong的情况了。
weak相当于assign,但是比后者多一点:对象被干掉时会将weak引用设为nil,而对nil发送消息都不会导致崩溃
否则weak引用为野指针,会出现问题
这里说strong 有copy的功能是错误的哦。实验例子
@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
NSString *retainStr;
NSString *copStr;
NSString *strongStr;
}
@property (retain, nonatomic) NSString *retainStr;
@property (strong, nonatomic) NSString *strongStr;
@property (copy, nonatomic) NSString *copStr;
@end
NSMutableString *newStr = [NSMutableString stringWithFormat:@"abcd"];
self.retainStr = newStr;
self.strongStr = newStr;
self.copStr = newStr;
[newStr appendString:@"123"];
NSLog(@"retain sting:%@", self.retainStr);
NSLog(@"strong string:%@", self.strongStr);
NSLog(@"copy string:%@", self.copStr);
输出结果:
2014-05-02 13:31:17.660 TestMultipleThreadDownload[552:60b] retain sting:abcd123
2014-05-02 13:31:17.662 TestMultipleThreadDownload[552:60b] strong string:abcd123
2014-05-02 13:31:17.663 TestMultipleThreadDownload[552:60b] copy string:abcd
相关文章推荐
- 关于BlogBench的任何建议和Bug请在这里留言,谢谢支持!
- 功能讨论区——有建议就反馈!
- 自动化测试-小公司,UI设计想法,欢迎大家留言,一起讨论,有最好的办法去实现
- 有关博客园的发展的建议讨论[附带聊天记录]
- 《Flex第一步》第二版征集读者留言和建议
- 欢迎留言讨论
- 中国软件业和Linux的讨论和建议
- 【建议】有一个想法---关于留言设置
- 开发电脑选择小建议讨论
- 使用redis服务器实现队列(欢迎留言讨论)
- 架构组织形式的讨论,以及架构师之路的建议
- 和大家讨论一下《Undocumented Windows 2000 Secrets》一书的翻译问题,希望大家给我一些建议
- 鼠标屏幕取词的原码! 贴出来讨论兼求教,请高手一定留言,谢
- 关于翻译《CSS - The Missing Manual》术语表的讨论与建议
- “老男孩老师出书真诚征集博友建议”上面的留言
- 为什么上大学?学到了什么和建议的讨论总结
- 给我留言讨论问题的朋友请注意了!
- 【转】面试建议 每个要找工作的童鞋必看~
- 牵扯较多属性和方法的类题目,很简单的题目本来不想发的,如果有同学学到这个题目感觉太长不愿敲代码,copy走我的即可~不过还是建议自己打一打
- 给我留言讨论问题的朋友请注意了!