close

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,我們可以在子類別修改其行為。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Forth 的頭像
    Forth

    不就是個blog

    Forth 發表在 痞客邦 留言(0) 人氣()