文档章节

【非凡程序员】 OC第十四节课 (代理模式 二 闹铃响了)

七月流火zsp
 七月流火zsp
发布于 2015/06/04 21:58
字数 337
阅读 115
收藏 1
点赞 0
评论 0

这是一个人定闹钟的例子,就是人委托闹钟叫醒自己

main函数:

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Clock.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool  {
        // insert code here...
        NSLog(@"Hello, World!");
       
        Person *person1=[[Person alloc]init];
        person1.name=@"岁平";
       
        Clock *clock=[[Clock alloc]init];
        clock.person =person1;
   
        person1.delegate=clock;

        person1.persondate=@"201506041716";
        
        [person1 setup];
       
        [[NSRunLoop currentRunLoop]run];

       
    }
    return 0;
}

Person.h文件

#import <Foundation/Foundation.h>
#import "ClockProtocol.h"

@interface  Person : NSObject

@property (nonatomic,assign) NSString *name;
@property (nonatomic,assign) id <ClockProtocol> delegate;
@property (nonatomic,assign) int count;
@property (nonatomic,assign) int suijishu;
@property (nonatomic,assign) NSString *persondate;
-(void) setup;
-(void) getup:(int) ringTimes;

@end

Person.m文件:

#import "Person.h"

@implementation Person

-(id)init
{
    self =[super init];
    if (self)
    {
        _suijishu=arc4random() %10;
    }
    return self;
}

-(void) setup
{
    NSLog(@"%@设置---⏰",_name);
 
    [_delegate ring];
}


-(void) getup:(int) ringTimes

{
    if (_suijishu==ringTimes)
    {
        NSLog(@"我要起来了");
        //[_delegate stop];
    }
    else
    {
        NSLog(@"getup.....");
    }

}

@end

Clock.h文件:

#import <Foundation/Foundation.h>
#import "ClockProtocol.h"
@class  Person;

@interface Clock : NSObject<ClockProtocol>
@property (nonatomic,assign) int count;
@property (nonatomic,assign) NSTimer *timer;
@property (nonatomic,weak) Person *person;
-(void) ring;

@end

Clock.m文件:

#import "Clock.h"
#import "Person.h"

@implementation Clock

-(id) init
{
    self = [super init];
 
    if (self!=nil)
    {
        _timer=[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(ring) userInfo:nil repeats:YES];
    }
    return self;
}


-(void) ring

{
    NSDate *date=[NSDate date];
    NSDateFormatter *f=[NSDateFormatter new];
    [f setDateFormat:@"yyyyMMddHHmm"];
    NSString *datetime=[f stringFromDate:date];
 
    if ([datetime isEqualToString: _person.persondate])
    {
        _count++;
       
        [_person getup:_count];
  
        [self sing];
       
    }
    else
    {
        NSLog(@"%@,datetime);
    }
   
 
}

-(void) sing
{
    NSLog(@"ding----ding---ding   快起床啊啊啊-------");
}

- (void) stop
{
    [_timer invalidate];
}

@end

ClockProtocol.h文件(协议)

#import <Foundation/Foundation.h>

@protocol ClockProtocol <NSObject>

@optional
-(void) ring;

@required
-(void) stop;

@end

© 著作权归作者所有

共有 人打赏支持
七月流火zsp
粉丝 9
博文 29
码字总数 11273
作品 0
西安
【非凡程序员】 OC第十五节课 (观察者模式和KVO进行对比)

今天主要学了观察者模式,以及回顾复习了KVO,两者进行对比 什么是观察者模式? 我们先打个比方,这就像你订报纸。比如你想知道美国最近放生了些新闻,你可能会订阅一份美国周刊,然后一旦美...

七月流火zsp
2015/06/05
0
0
设计模式(Swift) - 3.观察者模式、建造者模式

上一篇 设计模式(Swift) - 2.单例模式、备忘录模式和策略模式中讲了三种常见的设计模式. 单例模式: 限制了类的实例化,一个类只能实例化一个对象,所有对单例对象的引用都是指向了同一个对象....

Dariel
07/01
0
0
教程1:Objective-C

Objective-C的教程已经看过了。 内容大概有:[Objective-C基础语法(if/else/switch/for...),关键字,运算符],[面向对象(封装/继承/多态)],[Foundation框架常用类],[内存管理],[协...

殷美洪
2013/03/11
0
0
【非凡程序员】 OC第十四节课 (代理模式 一 医生与病人)

1.代理模式 举个例子:有一个婴儿,他本身不会自己吃饭和洗澡等等一些事情,于是婴儿就请了一个保姆,于是婴儿和保姆之间商定了一个协议,协议中写明了保姆需要做什么事情,而保姆就是这个代...

七月流火zsp
2015/06/03
0
0
代理模式(Proxy Pattern):动态代理 - 最易懂的设计模式解析

前言 今天我来全面总结开发中最常用的设计模式 - 代理模式中的动态代理模式 其他设计模式介绍 1分钟全面了解“设计模式” 单例模式(Singleton) - 最易懂的设计模式解析 简单工厂模式(Sim...

Carson_Ho
04/09
0
0
【设计模式笔记】(十六)- 代理模式

一、简述 代理模式(Proxy Pattern),为其他对象提供一个代理,并由代理对象控制原有对象的引用;也称为委托模式。 其实代理模式无论是在日常开发还是设计模式中,基本随处可见,中介者模式中...

MrTrying
06/24
0
0
(目录)设计模式(可复用面向对象软件的基础)

本系列“设计模式”博客使用Golang语言实现算法。所谓算法是指解决一个问题的步骤,个人觉得不在于语言。小弟只是最近学习Golang,所以顺带熟练一下语法知识,别无它意。 本系列博客主要介绍...

chapin
2015/01/13
0
0
JavaScript设计模式之观察者模式

前言 准备研究一下MVVM的一些东西,由于MVVM运用了观察者模式的思想,因此翻开了《JavaScript设计模式与开发实践》一书,将观察者模式学习了一遍,顺便有对一些常用的设计模式进行一些了解,...

Srtian
05/22
0
0
炒冷饭系列:设计模式 抽象工厂模式

炒冷饭系列:设计模式 抽象工厂模式 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 亲爱我,孝何难;亲恶我,孝方贤。 一、什么是抽象工厂模...

泥沙砖瓦浆木匠
2014/07/24
0
0
javascript 设计模式之工厂(Factory)模式

工厂模式介绍 工厂模式是一个创建型的模式,主要就是创建对象。其中工厂模式又分为简单工厂模式和抽象工厂模式。简单工厂模式是通过工厂方法确定创建 对应类型的对象。抽象工厂模式是通过子类...

hlxiong
2014/04/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

iOS安全应该做哪些事情

1. 尽量使用HTTPS协议。 2. 密码提交的时候,密码使用SHA256加密后传输,MD5等经过哈希碰撞已经可以推算出原文。 3. 密码提交的时候,可以加盐。 4. 密码保存在本地的时候,尽量使用钥匙串保...

HOrange
10分钟前
0
0
react native 注意事项

1. 环境参考官网 android studio 必装 java jdk安装 1.8版本(环境建议自己一步一步配置,切记不要 apt ) 2.有改变编译内容发现 会白屏,然后APP消失,请卸载原来的测试 appinfo (连续两次...

304158
17分钟前
0
0
FOMO游戏代码解析

源代码在此处

怎当她临去时秋波那一转
22分钟前
1
0
EOS智能合约与DApp开发入门

EOS的是Block.One主导研发的一个区块链底层公链系统,它专门为支撑商业去中心化 应用(Decentralized Application)而设计,其代码开源。 比特币被称为区块链1.0,因为它开辟了数字加密货币的...

笔阁
34分钟前
1
0
编译cjson到dll

https://blog.csdn.net/mengzhisuoliu/article/details/52203724 编译完成后 是纯lua实现的json decode 的10倍以上...

梦想游戏人
44分钟前
0
0
JS基础- Date 对象

Date 对象 Date 对象用于处理日期和时间。 创建 Date 对象的语法: var myDate=new Date() 注释:Date 对象会自动把当前日期和时间保存为其初始值。 Date 对象属性 属性 描述 constructor 返...

ZHAO_JH
46分钟前
0
0
Python数据分析numpy(1)

Python开源的科学计算基础库 1.表示N维数组对象ndarray 2.线性代数、傅里叶变换、随机数生成 3.广播函数,整合c++、c 一.数据的维度 1.数据 2.数据维度 3.一维数据 (1)特点 (2)Python中的...

十年磨一剑3344
49分钟前
1
0
csv导入Hive脚本

from pyspark.sql import HiveContexthivec = HiveContext(sc) # 创建一个hivecontext对象用于写执行SQL,sc为sparkcontext# 拼接一个字段类型字符串str_s = 'label String,'...

gulf
51分钟前
0
0
TensorFlow 隐含层 拟合 异或运算

a⊕b = (¬a ∧ b) ∨ (a ∧¬b) 数据 X = [[0, 0], [0, 1], [1, 0], [1, 1]]Y = [[0], [1], [1], [0]] 单层网络只能拟合线性问题,由于异或是非线性问题,需要使用多层网络 输入和输出 [[...

阿豪boy
今天
0
0
SVN 教程

http://www.runoob.com/svn/svn-tutorial.html 记一次 svn 管理的项目迁移工作 之前A服务器上的项目版本管理工具是用的SVN,后来,之前管理linux服务器的员工离职了,这管理服务器的工作也就...

yeahlife
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部