“非primefaces”属性是什么意思?
这个代码中的“非primefaces”是什么意思?
@property(nonatomic, retain) UITextField *theUsersName;
primefaces和非primefaces有什么区别?
谢谢
看看苹果文件 。
基本上,如果你说nonatomic
,并且使用@synthesize
生成访问器,那么如果多个线程试图立刻改变/读取属性,就会发生不良现象。 你可以得到部分写入的值或过度释放/保留的对象,这很容易导致崩溃。 (尽pipe这可能比primefaces访问器快很多)。
如果你使用默认的(这是atomic
;以前没有关键字,但现在有 ),那么@synthesize
d方法使用对象级锁来确保对单个属性的多个读/写操作被序列化。 正如苹果文档指出的, 这并不意味着整个对象是线程安全的 ,而是单独的属性读/写。
当然,如果你实现自己的访问器而不是使用@synthesize
,我认为这些声明什么都不做,除了expression你的意图是否是以线程安全的方式实现的。
阅读了这么多的文章和StackOverflowpost,并做了演示应用程序来检查variables属性属性,我决定把所有的属性信息放在一起
- primefaces//默认
- 非primefaces
- 强=保留/ /默认
- 弱= unsafe_unretained
- 保留
- 分配//默认
- unsafe_unretained
- 复制
- 只读
- 读写//默认
所以下面是详细的文章链接,你可以find上面提到的所有属性,这一定会帮助你。 非常感谢所有在这里给出最佳答案的人!
iOS中的variables属性或修饰符
- primefaces
- primefaces意味着只有一个线程访问variables(静态types)。
- primefaces是线程安全的。
- 但是performance慢。
- primefaces是默认行为。
- 在非垃圾收集环境(即使用保留/释放/自动释放)中的primefaces访问器将使用锁来确保另一个线程不会干扰正确的设置/获取值。
- 它实际上不是一个关键字。
例如:
@property (retain) NSString *name; @synthesize name;
- 非primefaces
- 非primefaces意味着multithreading访问variables(dynamictypes)。
- 非primefaces线程不安全。
- 但是它的性能很快。
- 非primefaces不是默认行为; 我们需要在属性中添加非primefaces关键字。
- 当两个不同的进程(线程)同时访问同一个variables时,可能会导致意外的行为。
例:
@property (nonatomic, retain) NSString *name; @synthesize name;
除了已经提到的线程安全性以外,非primefaces属性比primefaces访问器更快。 这不是你通常需要担心的事情,但要牢记在心。 核心数据生成的属性是非primefaces部分出于这个原因。
在multithreading程序中,primefaces操作不能被部分地中断,而非primefaces操作可以。
因此,如果你有一个非primefaces的关键操作,你不想中断,你应该使用互斥体(或类似的东西)。
如果你指定“primefaces”,生成的访问函数有一些额外的代码来防止同时更新。
通常primefaces意味着写入/读取属性作为单个操作发生。 Atomic_operation
你可以通过阅读下面的文章来获得这些东西的处理。
线程解释非primefaces的目的
非primefaces – 不是线程安全的
primefaces – 线程安全 – 这是默认的属性属性。
“primefaces”意味着对属性的访问是线程安全的,而“非primefaces”是相反的。当你在Objective-C中声明一个属性时,默认情况下这个属性是primefaces的,所以合成的访问器提供了强健的属性访问在一个multithreading的环境中,也就是说,getter或set通过setter返回的值总是被完全检索或者设置,而不pipe其他的线程是否同时执行,但是如果你声明属性是非primefaces的
@property (nonatomic, retain) NSString *myString;
那么这意味着一个对象属性的合成访问器只是直接返回值。 非primefaces属性的影响取决于环境。 默认情况下,合成访问器是primefaces的。 所以非primefaces比primefaces快得多。
一个是multithreading。 一个没有