为什么物业总是被认为在Objective C中是非primefaces的?
据说nonatomic
选项会使你的setter方法运行得更快。 我GOOGLE了,但不能理解。 有人能告诉我为什么吗?
声明一个属性atomic
使编译器生成额外的代码,防止并发访问属性。 这个额外的代码locking一个信号量,然后获取或设置属性,然后解锁信号量。 与设置或获取原始值或指针相比,locking和解锁信号量是昂贵的(尽pipe如果考虑应用程序的整体stream程通常可以忽略不计)。
由于在iOS下的大多数类,尤其是与UI相关的类,将被用在单线程环境中,因此放置atomic
是安全的(即,写入nonatomic
,因为属性默认为atomic
):即使操作相对便宜,你不想为你不需要的东西付钱。
看到目标c中的primefaces和非primefaces之间的差异
primefaces
primefaces是属性的默认行为; 通过不明确地将上述属性设置为非primefaces的,它将是primefaces的。
一个atomic属性在获取或设置值时增加了一个线程安全级别。 也就是说,无论其他线程在做什么,该属性的getter和setter将始终完全完成。 权衡是这些属性比非primefaces等价物要慢一些。
非primefaces
非primefaces性属性不是线程安全的,将直接返回它们的属性。 这将比primefaces性质更快,但如果不采取预防措施,显然会带来一些风险。
@property (strong) NSString *str;
primefaces是属性的默认行为; 通过不明确地将上述属性设置为非primefaces的,它将是primefaces的。
setter&getter这些primefaces属性
-(NSString *) str{ @synchronized(self){ return str; }} -(void) setStr: (NSString *) newString { @synchronized(self) { str = newString; }}
一个atomic属性在获取或设置值时增加了一个线程安全级别。 也就是说,无论其他线程在做什么,该属性的getter和setter将始终完全完成。 这些属性的访问速度会比非primefaces的速度慢一些。
@property (strong,nonatomic) NSString *str;
非primefaces性属性不是线程安全的,将直接返回它们的属性。 这将比primefaces性质更快,但如果不采取预防措施,显然会带来一些风险。
setter&getter为这些Nonatomic属性
-(NSString *) str{ return str; }} -(void) setStr: (NSString *) newString{ str = newString; }
所以通过寻找primefaces和非primefaces的setter&getter方法, 非primefaces方法的重量非常轻。
- 使用AVMutableComposition编写video和audio
- 如何在iOS中将kCVPixelFormatType_420YpCbCr8BiPlanarFullRange缓冲区转换为UIImage
- UIAlertView与用户提供的上下文和
- 在询问通知权限时是否可以有自定义对话框消息?
- 为什么INSPECT ELEMENT或WEB INSPECTOR或developerExtrasEnabled(WkWebView)在iOS中无法正常工作OSX
- 以(后缀)结尾,包含在SQLite FTS中使用MATCH进行stringsearch
- iTunes Connect提交审核 – 您的应用信息无法保存。 再试一次
- 用于iOS 8扩展的AFNetworking后台会话configuration
- 如何将“method_getImplementation”和“method_setImplementation”移植到MonoTouch?