OC學習總結(三)

cyxlzzs發表於2015-03-11

14、KVC和KVO

》KVC,key-value coding鍵值編碼,通過setValue: forKey: 的模式給物件設定屬性的值,有點類似於C#中的反射機制
    1、基本資料型別setValue時必須封裝成物件,解封時時自動的
    2、屬性為物件時,可以通過鍵的路徑進行設定和訪問。setValue: forKeyPath:和valueForKeyPath。path的訪問
       是通過點來逐層訪問,如Book物件的屬性Author,"author.name"為訪問作者姓名,
    3、屬性的下劃線和沒有下劃線是一樣的,如"author.name"和"_author._name"

》KVO,key-value observer鍵值觀察者。主要應用於觀察者模式
    1、註冊監聽
        - (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath
            options:(NSKeyValueObservingOptions)options context:(void *)context;
    2、實現監聽
        - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
            change:(NSDictionary *)change context:(void *)context;
    3、移除監聽
        - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath;

15、謂詞NSPredicate

》建立謂詞 predicateWithFormat,format中可以用>,=,<,>=,<=,&&,and,&&,or,||,in(大括號包含列表或者傳入陣列),
  beginswith,endswith,contains,like。
  也可以用佔位符

》evaluateWithObject判斷物件是否滿足設定的條件

》過濾陣列filteredArrayUsingPredicate和過濾可變陣列filterUsingPredicate

16、通知NSNotification

》發出通知
    [[NSNotificationCenter defaultCenter] postNotificationName:@"" object: userInfo];

》接受通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector: object];

》處理通知,通過第二步中selector來處理通知

》通知為一對多,缺點是不易於維護和管理,最好用delegate模式
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

版權宣告:本文為博主原創文章,未經博主允許不得轉載。