一、SDK中描述是在聲明property的時(shí)候,有2個(gè)選擇
1:通過(guò)@synthesize 指令告訴編譯器在編譯期間產(chǎn)生getter/setter方法。
2:通過(guò)@dynamic指令,自己實(shí)現(xiàn)方法。
有些存取是在運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建的,如在CoreData的NSManagedObject類(lèi)使用的某些。如果你想這些情況下,聲明和使用屬性,但要避免缺少方法在編譯時(shí)的警告,你可以使用@dynamic動(dòng)態(tài)指令,而不是@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;
聯(lián)系客服