【非凡程序员】 OC第十四节课 (代理模式 二 闹铃响了)
【非凡程序员】 OC第十四节课 (代理模式 二 闹铃响了)
七月流火zsp 发表于3年前
【非凡程序员】 OC第十四节课 (代理模式 二 闹铃响了)
  • 发表于 3年前
  • 阅读 115
  • 收藏 1
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

摘要: 非凡程序员,感谢 黄杨超 IOS指导。总结:张岁平学习笔记

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

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

标签: 非凡程序员
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 9
博文 29
码字总数 11273
×
七月流火zsp
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: