- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
谁能解释一下这行是什么意思?我曾经看到 (nonatomic,retain) 这是我第一次看到“assign”关键字:
@property (nonatomic, assign) id <IconDownloaderDelegate> delegate;
谢谢你的帮助,
史蒂芬
最佳答案
基于 Peter 的回答:
创建属性时,可以使用 @synthesize
指令自动创建 getter 和 setter 方法。编译器不仅创建了两个方法
- (id) delegate;
- (void) setDelegate: (id) newDelegate;
但也为此添加了额外的代码,以防止多个线程同时更改该属性(本质上是一个锁)。 nonatomic
告诉编译器代码不需要线程安全,这意味着更少的代码和更好的性能。
编译器使用 retain
创建的 setter 看起来像这样:
- (void) setDelegate: (id) newDelegate {
if (delegate != newDelegate) {
[delegate release];
delegate = [newDelegate retain];
}
}
这就是为什么您需要在类的 dealloc
方法中释放保留的属性。
由于一般建议是不要保留您的委托(delegate),因此您使用 assign
而不是 retain
并且 setter 看起来像这样:
- (void) setDelegate: (id) newDelegate {
if (delegate != newDelegate) {
delegate = newDelegate;
}
}
关于iphone - @property (nonatomic, assign) id <IconDownloaderDelegate> 委托(delegate);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7379086/
在这样的代码中,(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
我是一名优秀的程序员,十分优秀!