iOS开发-OC中属性创建需要注意的地方(property实例变量的创建和标准存取方法)
来源:互联网 发布:互动课堂软件 编辑:程序博客网 时间:2024/05/18 02:56
现在很多人都不太会使用属性,而且把控不住内存,导致崩溃异常等情况。用的时候不去思考怎么使用更加严谨,防止发生其他的情况。
那么我就说说property 的内存管理如何去把控防止出现糟糕的情况:
1 @property (assign)
assign
属于ARC的内存管理模式,但是意味着不保留实例变量,也不在销毁之前把该对象设成nil。
2 @property ( retain)
retain
在内存管理中,会保留而且释放实例变量,常用在MRC中,会在销毁之前把对象变为nil。
3 @property ( strong)
strong
和retain相同的是,会保留并且释放实例变量,会在销毁之前nil,但是strong常用语ARC中
属于强引用类型,意味着是对象的默认设置。
4 @property ( copy)
copy
多说一点,在创建容器类的对象属性,一定要用copy,能减少很多崩溃以及传值为空的现象
作用是保留并释放实例对象,销毁前设置为nil。☆在设置实例变量时会进行复制,要注意着不
是将指针赋值。
5 @property ( weak)
不保留实例对象,属于弱引用类型,但是在销毁之前也会nil。
在创建属性的时候,要明确这些属性用到什么地方,需要传什么值,以及内存管理的问题
给一个建议就是能用类自己的成员变量尽量用成员变量,如果涉及到多页面传值、block
或是属性在别的类需要调用,再使用属性,内避免很多问题。
再说一个属性中重要的东西:
@property (nonatomic,assign)和@property(atomic,assign)两个属性中的atomic 和nonatomic是什么鬼呢?
在属性创建的时候,默认是atomic ,atomic的意思就是命令编译器加锁,让属性能够同时被多个线程安全访问。
如果不需要这个加锁机制,那就是nonatomic,让编译器不生成加锁代码,涉及到一些银行金融等项目用到atomic,主
要防止属性传值被人截取。
6.@property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的。
“属性”(property)有两大概念:ivar(实例变量)、存取方法(access method=getter),即@property = ivar + getter + setter。
例如下面这个类
@interface ZQTextView :UITextView
@property (nonatomic,copy)NSString *placehold;
@property (nonatomic,copy)UIColor *placeholdColor;
@end
@interface ZQTextView :UITextView
- (NSString *)placehold;
-(void)setPlacehold:(NSString *)placehold;
-(UIColor *)placeholdColor;
-(void)setPlaceholdColor:(UIColor *)placeholdColor;
@end
- iOS开发-OC中属性创建需要注意的地方(property实例变量的创建和标准存取方法)
- iOS开发-OC中属性创建需要注意的地方(property实例变量的创建和标准存取方法)
- 【OC学习-9】利用@property属性和@synthesize简化实例变量的存取器方法
- IOS开发需要注意的property变量声明
- IOS开发需要注意的property变量声明
- Arrays.asList方法创建List需要注意的地方
- 在VS2005中创建rdlc报表需要注意的地方
- eclipse创建Hibernate Demo中需要注意的地方
- 创建 CentOS7容器 需要注意的地方
- Property属性操作时候需要注意的地方
- OC中属性(property)与实例变量(instance variable)之间的区别
- CardView开发中需要注意的地方
- OC中标准的类创建的方法
- OC 实例变量(instance var)与属性(@property)的关系
- 黑马程序员——OC基础--@property在开发中需要注意的使用细节
- 关于Android创建Activity需要注意的地方
- Android 代码创建TextView需要注意的地方
- 关于Android创建Activity需要注意的地方
- LCA模板在线 POJ 1986 Distance Queries
- 不同版本Notification的显示问题(最简单的方法是把目标版本更改为4.4)
- 在没SQL Server数据库情况下怎么打开.MDF文件?
- jquery json合并
- web前端知识补充记录
- iOS开发-OC中属性创建需要注意的地方(property实例变量的创建和标准存取方法)
- Aes加密/解密示例
- android - 自定义圆角输入框,提示框,按钮
- HDU 2544 最短路(模板题)
- Oracle 查看表空间的大小及使用情况sql语句
- - 六度分离
- HDU 2048数塔
- Python黑帽编程2.3 字符串、列表、元组、字典和集合
- Ftp上传