close
from http://forth.pixnet.net/blog/post/25397785-key-value-coding
NSObject提供兩個method:
- (id)valueForKey:(NSString *)attrName
- (void)setValue:(id)newValue forKey:(NSString *)attrName
我們可以透過這兩個method存取物件中的變數,它們會優先使用變數的accessor method,當accessor method不存在時,才直接存取變數。假設有隻貓:
@interface Cat : NSObject {
NSString* name;
}
- (NSString*)name;
- (void)setName:(NSString*)aName;
@end
我們可以這麼用:
[cat setValue:@"Cocoa" forKey:@"name"];
NSString* catName = [cat valudForKey:@"name"];
傳給setValue的值如果是nil,會呼叫NSObject的
- (void)setNilValueForKey:(NSString *)s
setNilValueForKey預設會產生exception,我們可以在子類別修改其行為。
全站熱搜