`
844604778
  • 浏览: 553123 次
文章分类
社区版块
存档分类
最新评论

oc中KVC,KVO,通知的使用

 
阅读更多

KVC:

核心内容:

//对象的变量赋值

【对象setValueaValueforKeyaKey】;

//把变量值取出来

aValue=【对象valueForKeyaKey】;


forexample:

//当然Student的类已经写好了

Student*stu=【【Studentalloc】init】;

//对对象变量赋值

【stusetValue:@"王之宝"forKey:@"name"】;

//变量值取出

NSStrings1=【stuvalueForKey:@"name"】;

//内存的释放不要忘记

【sturelease】;




KVO:

1、注册监听

【被监听对象addObserver监听者forKeyPath被监听对象的属性options监视内容(新值或旧值)context额外信息】;

2、监听者实现的方法

-(void)observerValueForKeyPath:(NSString*)keyPath

ofObject:(id)object(被监听对象)

change:(NSdictionary*)change

context:(void*)context(可以理解为参数){

NSLog(@“keyPath:%@object:%@change:%@context:%@”,keyPath,object,change,context);

}

3、监听触发条件

//被监听对象key=newValue;

//自动调用监听方法

forexample:


-(void)observerValueForKeyPath:(NSString*)keyPath

ofObject:(id)object

change:(NSDictionary*)change

context:(void*)context{

NSLog:(@"keyPath:%@object:%@change:%@context:%@",keyPath,object,change,context);

}


Student*stu=【【Studentalloc】init】;

stu.name=@"张三";

【stuaddObserver:self

forKeyPath:@"name"

options:NSKeyValueObservingOptionNew

context:nil】;

stu.name=@"李四";

stu.name=@"王五";

【sturelease】;




NSNotification:

1、获得通知中心对象

NSNotificationCenter*nc=【NSNotificationCenterdefaultCenter】;

2、监听通知

【centeraddObserver:监听者selector:须执行的方法name:所监听者通知的名称object:通知发送者】;

3、通知中心发布消息

【centerPostNotificationName:@“国王万岁”object:某人】;

4.移除监听中心

forexample:


-(void)test:(NSNtification*)n

{

NSLog(@"name:%@object:%@userInfo:%@",【nname】,【nobject】,【nuserInfo】);

}



King*king=【【Kingaloc】init】;

Farmer*farmer=【【Farmeralloc】init】;

NSNotificationCenter*center=【NSNotificationCenterdefaultCenter】;

【centeraddObserver:farmer

selector:@selector(test)

name:@"国王万岁"

object:king】;

【centerpostNotificationName:@"国王万岁"object:king】;

【centerremoveObserver:farmer】;

【kingrelease】;

【farmerrelease】;


***********以下为三合一的例子*************



#import<Foundation/Foundation.h>

@interfaceFRame:NSObject
-(id)initWith;
-(void)printInfo;
@end



#import"FRame.h"
@implementationFRame
-(id)initWith{
self=[superinit];
if(self){
NSNotificationCenter*center;
center=[NSNotificationCenterdefaultCenter];
[centeraddObserver:self
selector:@selector(printInfo)
name:@"tongzhi"
object:nil];
}
returnself;
}
-(void)printInfo{
NSLog(@"我已经知道了!");
}
@end


//一下我是在AppDelegate.m中写的东西,只把我写的地方拿出来了

FRame*fr=[[FRamealloc]initWith];

NSNotificationCenter*center=[NSNotificationCenterdefaultCenter];

[centerpostNotificationName:@"tongzhi"object:nil];


分享到:
评论

相关推荐

    oc中的通知,kvc,kvo

    关于ios学习中的通知和kvc,kvo案例的整理,基础的oc学习

    oc中kvc与kvo代码

    代码仅供参考 #import "lgsAppDelegate.h" #import "Student.h" #import "Teacher.h" @implementation lgsAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:...

    KVC,KVO机制

    KVC 是基于OCRuntime机制,Runtime机制里面可以通过得到实例变量并且访问其私有的成员变量区;实现keyPath中的访问能力;KVO一种通知发送机制,实现一对多,多对一的映射关系

    OC底层原理之OC语法

    KVC,KVO,Category,load.initalize,关联对象,关联对象,OC对象本质,事件的产生传递及响应,block底层研究

    OC底层原理之OC语法课件ppt

    KVC,KVO,Category,load.initalize,关联对象,关联对象,OC对象本质,事件的产生传递及响应,block底层研究

    苹果objc开源项目配置mac M1可编译调试版本-841.13

    通过苹果开放源码与汇编堆栈等方式可以分析ios底层原理 runtime msg block 线程 kvc kvo dispatch xcode clang编译脚本 swift编译脚本 符号问题处理 但前提是当前现有一个从0到1的初始化进程,除了可以方便调试objc...

    IOS学习PPT

    IOS学习的PPT,包含开发工具安装,OC基础语法,内存管理,文件管理,KVC,KVO等等教学。

    百度地图毕业设计源码-Sky-study:观看泊学网站swift实战视频并学习

    、单利、工厂模式、MVC、Notification以及KVC/KVO. 熟练使用代码和 XIB进行自动布局,对 StoryBoard 有所了解.熟练使用 Masonry 等自动布局库 熟悉 Json 解析, 熟练使用 YYModel库进行 Json解析. 熟练使用 Cocoapods ...

    objc4-818.2

    objc4-818.2这里总结了自己写的一些关于iOS原理的文章,基于objc4-818.2最新源码分析,会...类和分类加载过程iOS之武功秘籍⑨:类扩展与关联对象iOS之武功秘籍⑩:OC过渡翻译KVC,KVO多线程堵塞LLVM编译流程与Clang插件

    iOS(闭包)block传值详解

    在iOSAPP开发的过程中 我们会用到很多需要传值的地方 传值的方式也多种多样 有:代理传值、通知传值、KVC、KVO、block、单例 等。其中block 因为其简洁实用规范的代码 无疑是大牛们传值的不二选择 但对于初学者来说...

Global site tag (gtag.js) - Google Analytics