iOS 一些修饰关键字
2016-06-07 本文已影响262人
T_aa
很多方法,属性中...
有一些奇怪的关键字修饰...
o...
今天才知道粘代码要Markdown...
学习了...
MD好叼好叼...
Markdown学习链接...
__nullable、nullable
他们的作用一样...
修饰一个属性的值,或者参数是可空的...
可Null,nil...
有下划线和无下划线的区别...
有的放在属性修饰词的后面...
没有下划线的放在属性修饰词的前面...
@property (nonatomic, strong) NSObject * __nullable obj1;
@property (nonatomic, strong, nullable) NSObject * obj2;
- (void)daydayStudy3:(NSString * __nullable)language;
- (void)daydayStudy4:(nullable NSString *)language;
__nonnull、nonnull
他们的作用是...
修饰一个属性的值,或者参数不能为空...
使用的方法和nullable一样
__unused
如果在方法中定义了某个变量、或者传入了某个参数...
但是又不使用它...
可以用__unused来修饰他...
未使用不参与编译...
不然有警告...
__unused UIButton * btn = [UIButton new];
unsafe_unretained
作用和assign修饰对象的时候一样...
但是他多适用来修饰对象类型...
assign多适用修改基本类型...
他是指向数据的指针...
作用和weak一样...
但是...
他修饰的目标被释放的时候...
指针指向的数据被摧毁了...
但是这个指针还在...
变成了也指针...
我的理解是这样子...
不知道有这个隐藏的问题存在了...
用这个修饰词不是要很小心...
weak
在arc中...
weak用于修饰对象...
指针指向的数据释放了...
weak这个指针也自动变成nil...
delegate、outlet属性声明使用weak,delegate可以防止循环引用...
__block
block能访问局部变量.但不能修改...
如需修改需对这个变量加上__block
...
如果要对全局变量...
或者当前的控制器...
进行访问或者修改...
需要...
__weak typeof(&*self)weakSelf = self;
__unsafe_unretained typeof(&*self)weakSelf1 = self;
__weak typeof(&*_obj1)weakObj1 = _obj1;
防止block和当前所在控制器对象互相持有不能释放造成内存泄露...
防止循环引用...
参考网上各种资料...
项目地址...
有问题欢迎指出...
共进...