iOS中assign与weak,retain与strong的区别
来源:互联网 发布:游戏养羊软件 编辑:程序博客网 时间:2024/06/05 09:00
以前在没有ARC的时候我们使用assign与retain来修饰属性,后来引入了更安全的weak和strong来修饰属性
- assign与weak
两者都是弱引用,assign通常用于普通类型属性(如int,NSInteger),还有代理属性的修饰,基本上来说两者是可以通用的。
只是后者比前者多了一个功能,后者会在引用的对象被释放的时候将该属性置为nil,而前者依然会指向原来的位置,这样就会变成野指针。在oc中你给你一个nil对象发送消息不会crash,但是给一个对象发送他不能解析的消息是会crash的,所以总的来说weak要比assign安全一些。
像delegate属性建议用weak修饰而不是assign。 - retain和strong
他俩都是强引用,除了某些情况下不一样,其他的时候也是可以通用的。
在修饰block属性的时候,相信大家都知道要用copy吧,因为如果不copy的话,block是存放在栈连里面的,他的生命周期会随着函数的结束而出栈的,copy之后会放在堆里面。
strong在修饰block的时候就相当于copy,而retain修饰block的时候就相当于assign,这样block会出现提前被释放掉的危险。
0 0
- iOS中assign与weak,retain与strong的区别
- assign、copy、retain、weak、strong的区别与联系
- iOS 关键字 copy,assign,strong,retain,weak,readonly,readwrite,nonatomic,atomic,unsafe_unretained的使用与区别
- strong,weak,assign,retain,copy区别与联系
- iOS开发-assign、retain、copy、strong、weak的区别
- iOS开发之assign retain copy strong weak 的区别
- iOS nomatic strong,weak,retain,assign,copy 等的区别。
- retain copy assign strong weak的区别(iOS)
- iOS中 property中的属性strong 、weak、copy 、assign 、retain 、unsafe_unretained 与autoreleasing区别和作用详解
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
- Linux 2.6 中的页面回收与反向映射
- MySQL数据库基础(一)(启动-停止、登录-退出、语法规范及最基础操作)(持续更新中)
- 不改变原图的大小但要增加周围空白
- 系统分析设计
- Android中的文件扫描
- iOS中assign与weak,retain与strong的区别
- JDNI是什么
- 欢迎使用CSDN-markdown编辑器
- LeetCode题解-7-Reverse Integer
- iOS 深拷贝和浅拷贝
- eclipse中关于复制和移动一行或多行代码的快捷键
- 04 Monte Carlo方法求解非线性规划(02)
- Java--通用界面编写框架
- [翻译]<Web Scraping with Python>Chapter 3.开始爬行吧