IOS-synthesize和dynamic的異同

分類:IT技術 時間:2016-10-19
一、SDK中描述是在聲明property的時候,有2個選擇
:通過@synthesize 指令告訴編譯器在編譯期間產生getter/setter方法。
:通過@dynamic指令,自己實現方法。
有些存取是在運行時動態創建的,如在CoreData的NSManagedObject類使用的某些。如果你想這些情況下,聲明和使用屬性,但要避免缺少方法在編譯時的警告,你可以使用@dynamic動態指令,而不是@synthesize合成指令。例如
@interface Demo : NSManagedObject {
}
@property (retain) NSString* test;
@end
]
@implementation Demo
@dynamic test;
@end
二、
@synthesize will generate getter and setter methods for your property. @dynamic just tells the compiler that the getter and setter methods are implemented not by the class itself but somewhere else (like the superclass)
Uses for @dynamic are e.g. with subclasses of NSManagedObject (CoreData) or when you want to create an outlet for a property defined by a superclass that was not defined as an outlet:
Super class:
@property(nonatomic, retain)NSButton*someButton;
...
@synthesize someButton;

Subclass:
@property(nonatomic, retain)IBOutletNSButton*someButton;
...
@dynamic someButton;

Tags: interface property generate dynamic methods

文章來源:


ads
ads

相關文章
ads

相關文章

ad