zl程序教程

您现在的位置是:首页 >  后端

当前栏目

手动设定实例变量的KVO实现监听

实例变量 实现 监听 手动 设定 KVO
2023-09-14 08:57:17 时间

手动设定实例变量的KVO实现监听

如果将一个对象设定成属性,这个属性是自动支持KVO的,如果这个对象是一个实例变量,那么,这个KVO是需要我们自己来实现的.

以下给出源码供君测试:

Student.h 与 Student.m

//

// Student.h

// SuperNotification

// Copyright (c) 2014年 Y.X. All rights reserved.

#import Foundation/Foundation.h 

@interface Student : NSObject

 NSString *_age;

- (void)setAge:(NSString *)age;

- (NSString *)age;

@property (nonatomic, strong) NSString *name;

@end


//

// Student.m

// SuperNotification

// Copyright (c) 2014年 Y.X. All rights reserved.

#import "Student.h"

@implementation Student

@synthesize name = _name;

- (void)setName:(NSString *)name

 _name = name;

- (NSString *)name

 return _name;


forKeyPath:@"name" // 属性 options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil]; // 监听实例变量age [_student addObserver:self forKeyPath:@"age" // 实例变量 options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil]; _student.name = @"YouXianMing"; // 改变名字 _student.age = @"18"; // 改变年龄 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context NSLog(@"%@", change); @end

这个是手动实现KVO需要注意的地方:


访问对象的属性,你知道有哪些方法? 相信对象对于每个使用JavaScript的人来说都不陌生。访问对象的属性几乎日常开发每天都在用。下面我们一起探索下有哪些方式可以实现属性的访问。
iOS开发--通知,代理,KVO的区别,以及通知的多线程问题 1. delegate 当我们第一次编写ios应用时,我们注意到不断的在使用“delegate”,并且贯穿于整个SDK。delegation模式不是IOS特有的模式,而是依赖与你过去拥有的编程背景。针对它的优势以及为什么经常使用到,这种模式可能不是很明显的。
KVO解析(一) —— 基本了解KVO解析(二) —— 一个简单的KVO实现KVO解析(三) —— KVO合规性KVO解析(四) —— Faults and KVO Notifications