设计模式之观察者模式(关于OC中的KVO\KVC\NSNotification)

学习了这么久的设计模式方面的知识,最大的感触就是,设计模式不能脱离语言特性。近段时间所看的两本书籍,《大话设计模式》里面的代码是C#写的,有一些设计模式实现起来也是采用了C#的语言特性(C#的API,抽象类,在OC中是没有抽象类、没有多继承关系),《设计模式之禅》里面的代码是JAVA写的,与OC差距也是比较大。

但是我想,这些都不是问题,学习设计模式主要学习的是其中的思想,并将之改造成自己所熟悉语言的模式,大同小异。所需要注意的是,在学习的过程中,将之与语言结合起来,多思考、多实践。

  1. KVC

KVC:  key values coding   键值编码,间接通过字符串对应的key取出、修改其对应的属性。

作用: 可以访问和修改私有成员变量、readOnly成员变量的值。(替换系统自带的导航栏、替换系统自带的Tabbar等)

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@interface  ZYPerson :  NSObject
@property  ( nonatomic copy readonly NSString  *name;
 
- (instancetype)initWithName:( NSString  *)name;
@end
 
 
#import "ZYPerson.h"
 
@implementation  ZYPerson
- (instancetype)initWithName:( NSString  *)name
{
     if  ( self  = [ super  init]) {
         _name = name;
     }
     return  self ;
}
@end

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#import "ViewController.h"
#import "ZYPerson.h"
@interface  ViewController ()
 
@end
 
@implementation  ViewController
 
- ( void )viewDidLoad {
     [ super  viewDidLoad];
     // Do any additional setup after loading the view, typically from a nib.
     
     ZYPerson *personOne = [[ZYPerson alloc] initWithName:@ "张三" ];
     
     NSLog (@ "%@" ,personOne.name);
     
     
     //  然后,我发现名字写错了,需要修改
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值