- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我想知道:iPhone 开发中的所有属性都应该是 nonatomic
吗?如果是,为什么?
最佳答案
来自 The Objective-C Programming Language,强制性指南:
您可以使用此属性指定访问器方法不是原子的。 (没有关键字表示原子。)
非原子
指定访问器是非原子的。 默认情况下,访问器是原子的。
属性在默认情况下是原子的,因此合成访问器在多线程环境中提供对属性的健壮访问——也就是说,从 getter 返回的值或通过 setter 设置的值总是被完全检索或设置,而不管其他线程正在同时执行什么.有关详细信息,请参阅 “Performance and Threading.”
如果您指定retain
或copy
并且不指定nonatomic
,那么在引用计数环境中,一个合成的get 访问器对象属性使用锁并保留和自动释放返回值——实现将类似于以下内容:
[_internal lock]; // lock using an object-level lock
id result = [[value retain] autorelease];
[_internal unlock];
return result;
如果您指定 nonatomic
,对象属性的合成访问器将直接返回值。
关于objective-c - 所有属性都应该声明为 "nonatomic"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115792/
在这样的代码中,(retain, nonatomic) 和 (nonatomic, retain) 之间有什么区别: @property (retain, nonatomic) YellowViewC
@property(nonatomic)ivar 和 @property(nonatomic,assign)ivar 相同还是不同? 最佳答案 如 docs 中所述: assign - Specifi
@interface PaneBean : NSObject @property(nonatomic,copy) NSString *name; @property(nonatomic,copy) N
这段代码中的“非原子”是什么意思? @property(nonatomic, retain) UITextField *theUsersName; 原子和非原子有什么区别? 谢谢 最佳答案 看看App
我想知道:iPhone 开发中的所有属性都应该是 nonatomic 吗?如果是,为什么? 最佳答案 来自 The Objective-C Programming Language,强制性指南: 原子
我使用 Xcode 中的分析工具(分配)发现的是,当您清零一个属性时,它不会被释放,直到父类被清空。现在假设你想确保你不会在内存中保留一个昂贵的模态视图 Controller (假设它不会经常使用),
假设我有属性 @property (readonly) NSString* p1; @property (readonly, copy) NSString* p2; @property (readon
带有@property nonatomic 和 retain 的变量是否应该显式释放。 @interface MyScreenViewController : UIViewController {
具体详细介绍请看下文文字说明吧,本文介绍的非常详细。 1 . 可读性: readonly、readwrite @property(readwrite,....) valueType value;
我的其中一个对象有一个属性,如下所示: @property(nonatomic, weak) UIViewController *myParentViewController; 但是,在 ARC re
我在我的 .xib 文件中创建了一个分段控件和一个 TextView ,并在 .h 文件中将其声明为 @interface controlsViewController : UIViewControl
编辑:这个问题也适用于普通声明的属性(不仅适用于类属性)! 原帖: 假设我有一个公共(public)类方法 sharedInstance,它目前是作为一个 getter 方法实现的: @interfa
从自定义并发队列的 dispatch_barrier 中访问非原子变量是否安全? 以下代码片段是使用分派(dispatch)屏障的方法的简化版本: - (void)cacheData:(NSData
谁能解释一下这行是什么意思?我曾经看到 (nonatomic,retain) 这是我第一次看到“assign”关键字: @property (nonatomic, assign) id delega
我想知道如何在 C++ 中正确创建属性。在 Objective C 中,我使用“@property”(通常与 (nonatomic, retain) 属性一起使用)。 C++ 中正确的方法是什么? 谢
我正在深入研究 iOS 开发,我发现对于我的每个 UI 控件,我总是像这样盲目地声明它们的 @property,因为这就是我开始学习时阅读的一些教程中的做法... @property (retain,
在 Xcode 8 中遇到非常奇怪的错误: 我在 .h 文件中得到了属性: @property (nonatomic) BOOL isInAirmode; 以及 .m 中的访问器: - (void)s
如果我在类中声明了一个属性: @interface MyClass : NSObject @property (atomic) NSString *myString; @end 我实现了自定义的 ge
我正在开发一个针对 iOS 5.1+ 的 iOS 应用程序。我在 Mac OS X 10.8 上使用 XCode 4.5,并且我拥有一台装有 iOS 5.1.1 的 iPhone 4。该应用程序需要
尝试实现 NSItemProviderReading 协议(protocol)。在 Objective-C 中,你如何满足: @property(class, readonly, copy, nona
我是一名优秀的程序员,十分优秀!