標頭檔案
#import
@inte***ce
nsobject (kvo)
- (void)lyj_addobserver:(nsobject *)observer forkeypath:(nsstring *)keypath options:(nskeyvalueobservingoptions)options context:(nullable void *)context;
- (void)lyj_addobserver:(nsobject *)observer forkeypath:(nsstring *)keypath options:(nskeyvalueobservingoptions)options context:(nullable void *)context block:(void(^)(id object ,nsdictionary *change))block;
@end
體檔案
/*
oc的方法
1.sel 目錄
2.imp 頁碼
** 內容
*/#import "nsobject+kvo.h"
#import
@implementation
nsobject (kvo)
//自定義的kvo
-(void)lyj_addobserver:(nsobject *)observer forkeypath:(nsstring *)keypath options:(nskeyvalueobservingoptions)options context:(void *)context
-(void)lyj_addobserver:(nsobject *)observer forkeypath:(nsstring *)keypath options:(nskeyvalueobservingoptions)options context:(void *)context block:(void (^)(id, nsdictionary *))block
void setname(id
self,sel _cmd,nsstring * newname);
//修改name屬性!!
objc_msgsendsuper(&person, _cmd,newname);
//拿出觀察者!!
id observer = objc_getassociatedobject(self, @"objc");
//呼叫observer的
objc_msgsend(observer, @selector(observevalueforkeypath:ofobject:change:context:),@"name",self,@,nil);
}
呼叫
@implementation
viewcontroller
- (void)viewdidload ];
// [p lyj_addobserver:self forkeypath:@"name" options:nskeyvalueobservingoptionnew context:nil block:^(id object, nsdictionary *change) ];
//// [p lyj_addobserver:self forkeypath:@"name" options:nskeyvalueobservingoptionnew context:nil block:^(id object, nsdictionary *change) ];
//// [p lyj_addobserver:self forkeypath:@"name" options:nskeyvalueobservingoptionnew context:nil block:^(id object, nsdictionary *change) ];
//// [p lyj_addobserver:self forkeypath:@"name" options:nskeyvalueobservingoptionnew context:nil block:^(id object, nsdictionary *change) ];
//// [p lyj_addobserver:self forkeypath:@"name" options:nskeyvalueobservingoptionnew context:nil block:^(id object, nsdictionary *change) ];
_p = p;
}- (void)touchesbegan:(nsset*)touches withevent:(uievent *)event
@end
呼叫可以看到
此時person為lyjkvo_person 為person的子類
KVO實現自定義檔案複製進度展示
一 建立檔案 說明 自定義檔案類,通過nsfilemanager 以及nsfilehandle 實現檔案的建立和copy,為了控制記憶體的併發使用,通過控制每次賦值的固定長度來分多次複製 nsstring path nshomedirectory desktop boby.m nsstring ta...
自定義表盤探索1
0關於android wear開發,對於我來說是個新鮮活兒,下面就來說說心得把 1.基本手勢 如何在手錶裡寫好乙個service,先模仿,然後最重要的要知道手錶怎麼用,經過摸索,他們有如下幾個功能 下拉 看通知欄 上拉 看應用提示 左滑1步 看帶activity的應用 載滑就是通訊錄等其他功能了 還...
自定義元件使用spring底層元件
把spring底層一些元件注入到自定義的bean中 例如 獲得spring ioc容器給當前bean設定的名稱,實現beannameaware介面 獲得特殊符號的解析器,實現embeddedvalueresolveraware介面 aware介面都是繼承aware介面,實現aware介面的類都有乙個...