zoukankan      html  css  js  c++  java
  • iOS KVO 学习笔记

    ////
    ////  main.m
    ////  TestBasis
    ////
    ////  Created by ficow on 16/1/14.
    ////  Copyright © 2016年 ficow. All rights reserved.
    ////
    //
    #import <Foundation/Foundation.h>
    ///////////////////////////////////////////////////////////////////////////////////////////////
    @interface myClass1 : NSObject
    @property (nonatomic, copy) NSString *str;
    @end
    
    @implementation myClass1
    @end
    ///////////////////////////////////////////////////////////////////////////////////////////////
    @interface myClass : NSObject
    {
    }
    @property (nonatomic, retain) myClass1 *item;
    @end
    
    
    @implementation myClass
    
    - (id)init{
        if(self = [super init]){
            [self setValue:[[myClass1 alloc]init] forKey:@"item"];//如果不给item设置值,则最后得到的item.str为空!
        }
        return self;
    }
    /////////////////////////////////////////////////////////////////////////////////////////////
    //KVO part
    - (void) setItem:(myClass1 *)item{
        _item = item;
        [self addObserver:self forKeyPath:@"item.str" options:NSKeyValueObservingOptionNew context:nil];//1.添加监听器,监听item.str
        //[self.item addObserver:self forKeyPath:@"str" options:NSKeyValueObservingOptionNew context:nil];和上面的效果一样
    }
    
    //重写监听的方法,当被监听的对象改变了,就回调监听器的这个方法
    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{
        NSLog(@"item.str has changed");
    }
    
    - (void)dealloc{
        [self removeObserver:self forKeyPath:@"item.str"];//用完就删除监听器
    }
    
    @end
    /////////////////////////////////////////////////////////////////////////////////////////////
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            class1.item.str = @"item.str";
        }
        return 0;
    }
     
  • 相关阅读:
    线程数与多核CPU的关系,VMware中核数的设置
    shell基础编程
    MySql中join基础
    OneNote发布至博客园
    java获取系统换行符,路径分割符
    使用shell实现简单的词频统计
    Kylin系列之二:原理介绍
    MySQL 配置文件my.cnf
    SQLServer LinkServer 链接服务器
    sp_tableoption
  • 原文地址:https://www.cnblogs.com/ficow/p/5135492.html
Copyright © 2011-2022 走看看