Ovjective-c之@property @synthesize @dynamicy以及修饰符
来源:互联网 发布:nginx mp4点播 编辑:程序博客网 时间:2024/06/16 23:51
属性?成员变量?实例变量?
@property声明的是属性
写在大括号里面的是成员变量
除了基本数据类型以外的是实例变量
@property经常与@synthesize 、@dynamicy搭配使用
@synthesize :在Xcode4.5以前,除了定义一个属性之外,还必须在.m文件中加上@synthesize name=_name,编译器会在编译时为我们生成setter和getter方法,Xcode4.5以及4.5以后不用加这个,编译器也会为我们生成。
@dynamicy:告诉编译器不要帮我们生成setter和getter方法,自己手动实现,如果没有手动实现,但是用了self.属性,程序会崩溃
@property修饰符
1. 线程安全类的:
- atomic(默认):
- 原子属性,默认是线程安全的,但是只是对于属性 的存取来说,而且并不总是线程安全:当A线程正在修改这个属性,其他线程的读写操作会陷入等待,A线程写完后B线程开始写,那么当A再读得时候就会读到B的值,而且,要是有一个C线程不小心把这个属性销毁了,那么A再去访问,程序会崩溃,所以还是要用lock来保证线程安全
- 性能不好
- 只对setter方法加锁
- nonatomic:
非原子属性,线程不安全,支持多线程访问,效率高,一般使用这个
2. 访问权限(决定生成getter还是setter方法)
readwrite:可读可写,生成Setter和getter方法
readOnly:只允许读,只生成getter方法
3. 内存管理类
MRC下
- assign:解决循环引用
- retain:对象的引用计数加1
- copy:适用于NSString,NSArray,NSDictionary,会复制一份对象的内容,防止在对象在不小心更改以后影响我们原来的值。
ARC
* strong:强引用,相当于MRC下的assign,只要有一个强引用指向一个对象,这个对象就不会被销毁* weak:解决循环引用,相当于MRC下的assign,区别是会在对象被销毁后,把对象置为nil* assign:基本数据类型* copy:同MRC
修饰符辨别
- weak和assign:都可以解决循环引用,但是weak会在对象被销毁后置为nil
- copy和strong:strong是浅拷贝,拷贝一个指针指向原来的对象,与原来对象指向同一块内存;copy是浅拷贝:拷贝了原来对象的副本,内容之间不会相互影响,但是要注意,如果copy后得到的对象和被copy的对象都是NSString,也就是不可变,那么为了内存优化,不会产生新的副本。
0 0
- Ovjective-c之@property @synthesize @dynamicy以及修饰符
- objective-c之@synthesize和@property含义
- Objective-C 之 @property和@synthesize
- Objective-C之@property和@synthesize
- Objective-C 之 @property和@synthesize
- Objective-C 之 @property和@synthesize
- Objective-C 之 @property和@synthesize
- Objective-C 之 @property和@synthesize
- ios之property修饰符
- IOS学习之Objective-C中的@property和@synthesize用法
- objectc -c 之 property 与synthesize小记 (2)
- @property和@synthesize以及@property增强
- Objective-C @property & @synthesize 使用
- Objective-c @property和@Synthesize
- Object-C Property and Synthesize
- Objective-C - @property与@synthesize
- Object-C:@property和@synthesize
- ios之@property和@synthesize
- 运算符重载
- 蓝桥寒假训练1->2013年第四届蓝桥杯省赛
- 3.3栈与递归的实现
- 人见人爱 a^b
- UVa-10970 Big Chocolate
- Ovjective-c之@property @synthesize @dynamicy以及修饰符
- 验证日期正则表达式
- 玄虚赋
- leetcode Implement Trie (Prefix Tree)
- 两种版本系统
- 17/2/2 学习笔记
- Mysql中字符串拼接
- UVA11054:Wine trading in Gergovia(Gergovia的酒交易)
- 每天一个Linux命令4(mkdir命令)