常看iOS 开发

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和当前所在控制器对象互相持有不能释放造成内存泄露...
防止循环引用...


参考网上各种资料...


项目地址...

有问题欢迎指出...

共进...


上一篇下一篇

猜你喜欢

热点阅读