OC学习之路(10) - 设计模式

(一)类之间的通讯方式(数据传递)

代理设计模式

一对一

一个类只能委托一个对象去完成一件事情

KVO(监听)

一对多

一个类可以监听多个类

单例模式

公共

所有类共用这个对象

通知中心

一对多

一个对象可以通知多个对象

(二)单例模式

User.m代码如下:

@implementation User

static User *user = nil;         //定义静态的变量,保证对象在程序生命周期中不被销毁

+ (instancetype)shareUser{

    if(!user) {               //创建一个实例对象,当为nil时再创建否则返回原来的值,从而保证始终是同一个实例对象

        user = [[User alloc]init];

    }

    return user;

}

//覆盖allocWithZone: 避免使用alloc创建新的实例对象

+ (instancetype)allocWithZone:(struct _NSZone *)zone{

    if(!user) {

        user = [superallocWithZone:zone];

    }

    return user;

}

//覆盖copyWithZone: 避免使用copy复制出新的实例对象

- (id)copyWithZone:(NSZone *)zone{

    return user;

}

@end

 

Ø  alloc方法:开辟空间

Ø  init方法:对创建出来的父类对象属性初始化,以及当前对象的属性进行初始化

(三)通知中心

Ø  当一个类发送一个消息/通知,则其他监听了这个通知的类,会触发其设定的方法,从而执行设定的方法进行处理

Ø  通知中心的使用

//发送通知

NSDictionary *dic =@{@"1":@"哥哥",@"2":@"姐姐"};

[[NSNotificationCenterdefaultCenter] postNotificationName:@"登陆消息"object:@"登陆成功" userInfo:dic];

//监听通知

[[NSNotificationCenterdefaultCenter] addObserver:self selector:@selector(pay:) name:@"登陆消息" object:nil];

//通知处理方法

- (void)pay:(NSNotification*)notification{

   NSLog(@"%@  %@",notification.name, notification.object);

}

//移除通知

- (void)dealloc{

   [[NSNotificationCenterdefaultCenter] removeObserver:self];    //移除所有通知

   [[NSNotificationCenter defaultCenter] removeObserver:selfforKeyPath:@"登录消息"];//移除指定名称的通知

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值