你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> IOS開發之KVC與KVO簡述

IOS開發之KVC與KVO簡述

編輯:IOS技巧綜合
[摘要]本文是對IOS開發之KVC與KVO簡述的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

KVC:Key-Value Coding

KVO:Key-Value Observing

Person.m

@interface Person : NSObject{
    //該訪問修飾符用於說明即使私有成員變量也可以通過kvc方式訪問和賦值
    @private
    NSString *_name;
}
@end

@implementation Person
@end

PersonObserve.m

@interface PersonObserve : NSObject
@end

@implementation PersonObserve
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    Person *p = (Person *)object;
    //使用kvc方式獲取成員變量keypath的值
    NSLog(@"%@",[p valueForKey:keyPath]);
}
@end

main.m

int main(int argc, const char * argv[]) {
    //觀察者類
    PersonObserve *po = [[PersonObserve alloc] init];
    Person *p = [[Person alloc] init];
    //使用kvo方式對成員變量“name”的屬性值變化增加觀察者po
    //po將在該屬性值發生變化時執行- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context方法
    [p addObserver:po forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil];
    
    //通過kvc方式設置成員變量“name”的屬性值
    //出發觀察者執行對應方法
    [p setValue:@"yangys" forKey:@"name"];
    
    //移除對私有成員變量“name”的觀察
    [p removeObserver:po forKeyPath:@"name"];
    return 0;
}

結果:

2015-03-02 20:57:52.487 KVC&KOC[843:24874] yangys
Program ended with exit code: 0
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved