亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用到定時器,單例和協議的一個小應用(2)

2019-11-14 19:13:11
字體:
來源:轉載
供稿:網友

    上一篇文章寫了一個簡單的定時器,也可以正常的運行了。但是現在有一個問題,就是如果像我們手機上那個定時器程序一樣。即使切換到鬧鐘或者世界時間的時候定時器依然要要在后在運行。我們剛才那種寫法就并不行了。因為我們當我們轉換其他界面的時候,已經退出了那個定時器的界面,意味著那個界面的Controller已經被銷毀了。我們的定時器并不能在我們切換到其他界面的時候依然運行。這個時候需要一個怎樣的方法來解決啦。我們就要用到一個在很多語言下都有的模式叫單例模式。

    首先最重要的問題時搞懂什么叫做單例模式。在網上查了很多資料,都看的不是很懂,現在我說一下我自己的理解。單例是一個跟程序的運行的周期一樣的類。一個程序里面只能有一個單例類的實例。你現在有個controller,你在里面實例化了一個單例,你在這個controller中修改了這個實例的屬性的值。現在有另外一個controller1。你在這個類中繼續實例化了一個單例。你查看這個實例屬性的值,你會發現跟剛才你修改過后的屬性的值一樣。而且單例生命周期是跟程序生命周期一樣,所以當你退出了那個界面之后 你會發現定時器依然在后臺運行。

 

所以我們想使定時器在我們退出那個界面之后還能繼續運行,我們就需要創造一個單例類。

下面貼出單例類的代碼

Timemanager.h 文件

 

#import <Foundation/Foundation.h>

#import "Time.h"

  

 

@interface Timemanage : NSObject

 

@PRoperty(nonatomic,strong) Time *time;

 

+(Timemanage*)shareManage;//單例類的類初始化方法,十分重要,決定了你這個類是否是單例類

 

 

-(void)timestart;

 

-(void)timepause;

 

 

@end

 

 

Timemanage.m文件

 

#import "Timemanage.h"

 

 

 

@interface Timemanage()

 

 

 

@property(nonatomic,retain)NSTimer *timer;

 

 

 

@end

 

 

 

 

 

@implementation Timemanage

 

 

 

 

 

+(Timemanage*)shareManage;//單例的初始化方法,有很多種,但是這個是蘋果官方推薦的。

 

{

 

    static Timemanage *timemanageInstance=nil;

 

    static dispatch_once_t predicate;

 

    dispatch_once(&predicate, ^{

 

        timemanageInstance=[[self alloc]init];

 

    });

 

    return  timemanageInstance;

 

}

 

 

 

-(void)timestart

 

{

 

    if (!_timer) {

 

        _timer=[NSTimer scheduledTimerWithTimeInterval:0.01f target:self selector:@selector(UpdateUI) userInfo:nil repeats:YES];

 

    }

 

}

 

 

 

-(void)timepause

 

{

 

    if (_timer.valid) {

 

        [_timer invalidate];

 

    }

 

    _timer=nil;

 

}

 

 

 

-(void)UpdateUI

 

{

 

    self.time.ms++;

 

    [self.time changtime];

 

  //  [self.changedelegate changeUIwithtimestring:[self.time timestring]];會使用到的協議

 

}

 

 

 

-(Time*)time

 

{

 

    if (!_time) {

 

        _time=[[Time alloc]init];

 

    }

 

    return _time;

 

}

 @end

我們要的單例已經創建成功了。但是現在問題是怎么才能把我們的時間實時同步到我們的UI上面,剛才沒用到單例的時候,我們可以直接在controller中初始化我們的NSTimer,并且在在UPdateUI方法中實時更新我們的UI,但是現在我們并不能直接引用lable了。所以在這里我們必須使用協議以保證我們的UI與數據同步。

 

 

 首先修改下我們的Timemanage.h文件,在這個文件中創建我們的協議

 

 

#import <Foundation/Foundation.h>

#import "Time.h"

 

@protocol changeUIdelegate <NSObject>

 

-(void)changeUIwithtimestring:(NSString*)time;//創建協議

 

@end

 

 

@interface Timemanage : NSObject

 

@property(nonatomic,strong) Time *time;

 

@property(nonatomic,retain) id<changeUIdelegate> changedelegate;//設置協議

 

+(Timemanage*)shareManage;

 

-(void)timestart;

 

-(void)timepause;

 

 

@end

 

現在只需要在Timemanage.m中添加一句話

 

把UpdateUI方法修改一下

-(void)UpdateUI

{

    self.time.ms++;

    [self.time changtime];

    [self.changedelegate changeUIwithtimestring:[self.time timestring]];//委托,這個方法調用的時候,viewcontroller的實現協議的方法也會調用。

}

 

貼一下viewcontroller的代碼

 

#import "ViewController.h"

#import "Timemanage.h"

 

@interface ViewController ()<changeUIdelegate>//聲明實現了協議

@property (weak, nonatomic) IBOutlet UILabel *lable;

 

@property(strong,nonatomic) Timemanage *time;

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

}

 

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

- (IBAction)start:(id)sender {

    

    _time=[Timemanage shareManage];

    _time.changedelegate=self;//把委托對象設為自己

    [_time  timestart];

    

}

 

 

-(void)changeUIwithtimestring:(NSString *)time

{

    self.lable.text=time;//協議的實現,將傳過來的time顯示在lable。

}

 

- (IBAction)stop:(id)sender {

    [_time timepause];

}

現在大家可以添加個viewtroller2,然后切換到另外一個界面,再切換到計時器頁面,會發現計時器依然在運行。

 

 

 第一次寫博客,有很多東西表達不是很清楚。希望能指出。

 

@end

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97av在线视频| 国产精品网站视频| 成人激情春色网| 日韩欧美在线观看| 国产亚洲精品一区二区| 中文字幕精品影院| 一区二区三区美女xx视频| 亚洲国语精品自产拍在线观看| 91a在线视频| 欧美日韩在线视频一区二区| 国产原创欧美精品| xx视频.9999.com| 国产精品夜色7777狼人| 国产91露脸中文字幕在线| 色噜噜狠狠狠综合曰曰曰88av| 亚洲日本aⅴ片在线观看香蕉| 国产丝袜高跟一区| 69**夜色精品国产69乱| 日韩成人av在线播放| 亚洲第一页自拍| 欧美日韩精品在线播放| 国自产精品手机在线观看视频| 亚洲精品乱码久久久久久金桔影视| 77777亚洲午夜久久多人| 日韩av一区二区在线观看| 欧洲午夜精品久久久| 久久久久久国产精品三级玉女聊斋| 成人精品福利视频| 欧美裸体xxxx| 欧美大片在线免费观看| 精品国产欧美成人夜夜嗨| 色婷婷av一区二区三区久久| 日韩欧美一区视频| 欧美国产在线视频| 精品国产999| 久久精品视频在线播放| 久久乐国产精品| 久久国产精品久久久久久久久久| 精品国偷自产在线视频99| 尤物99国产成人精品视频| 国产精品精品一区二区三区午夜版| 91亚洲国产精品| 国产色婷婷国产综合在线理论片a| 91久久久久久久久久久| 亚洲成人av片在线观看| 亚洲第一精品夜夜躁人人爽| 欧美日韩国产一区中文午夜| 乱亲女秽乱长久久久| 国产精品免费久久久久久| 亚洲专区在线视频| 亚洲乱码国产乱码精品精天堂| 亚洲精品日韩av| 夜夜躁日日躁狠狠久久88av| 日韩欧美成人网| 国产一区二区三区在线看| 狠狠综合久久av一区二区小说| 久久国产加勒比精品无码| 欧美老女人bb| 亚洲色图美腿丝袜| 久久久久久久国产精品| 欧美日韩亚洲激情| 日韩欧美一区二区三区| 日韩av片电影专区| 91在线高清免费观看| 91视频国产高清| 亚洲视频自拍偷拍| 成人性教育视频在线观看| 国产丝袜一区视频在线观看| 久久久成人av| 日韩美女视频免费在线观看| 国产欧美韩国高清| 日韩av在线网页| 亚洲一区二区久久| 亚洲成av人片在线观看香蕉| 欧美极品少妇全裸体| 亚洲欧美日韩国产中文| 欧美刺激性大交免费视频| 中文亚洲视频在线| 亚洲国产高清福利视频| 91免费精品视频| 96pao国产成视频永久免费| 久久99精品久久久久久青青91| 国产精品ⅴa在线观看h| 日韩精品在线视频观看| 另类视频在线观看| 欧美激情视频网址| 91国产美女在线观看| 久久久久国产精品一区| 青青精品视频播放| 国产亚洲欧美一区| 日韩av最新在线观看| 亚洲欧美视频在线| 国产精品久久久久久五月尺| 久久精品国产亚洲精品| 国产精品久久久久久久久久99| 久久久99久久精品女同性| 69av视频在线播放| 欧美国产日本高清在线| 中文在线资源观看视频网站免费不卡| 久久69精品久久久久久久电影好| 日本国产精品视频| 亚洲自拍偷拍在线| 成人欧美一区二区三区在线湿哒哒| 欧洲美女7788成人免费视频| 成人自拍性视频| 国产精品爱久久久久久久| 91在线无精精品一区二区| 狠狠色狠狠色综合日日小说| 色综合老司机第九色激情| 97精品伊人久久久大香线蕉| 亚洲www视频| 91黑丝在线观看| 成人a免费视频| 精品国产一区二区三区久久| 亚洲午夜性刺激影院| 亚洲欧美成人一区二区在线电影| 亚洲天堂网在线观看| 亚洲成人精品在线| 亚洲国产成人精品女人久久久| 在线观看精品国产视频| 欧美乱大交xxxxx另类电影| 色在人av网站天堂精品| 亚洲午夜性刺激影院| 亚洲午夜久久久影院| 成人黄色免费片| 国产日韩精品入口| 黄色精品一区二区| 国产99久久精品一区二区永久免费| 欧美激情精品久久久久久久变态| 亚洲精品动漫100p| 日韩av中文字幕在线免费观看| 国产主播在线一区| 中文字幕日韩av| 国产精品扒开腿做爽爽爽男男| 亚洲欧美日韩天堂| 亚洲天堂av在线免费观看| 亚洲护士老师的毛茸茸最新章节| 宅男66日本亚洲欧美视频| 国产日韩欧美日韩大片| 亚洲激情自拍图| 国产主播精品在线| 成人免费网站在线| 狠狠躁夜夜躁人人爽天天天天97| 永久免费精品影视网站| 国产一区二区三区日韩欧美| 色综合久久精品亚洲国产| 欧美成年人网站| 91免费版网站入口| 欧美老肥婆性猛交视频| 日韩中文字幕视频| 国产在线播放不卡| 九九热在线精品视频| 亚洲最新在线视频| 日韩av不卡在线| 欧美精品18videos性欧| 国产日韩中文字幕| 亚洲国产精品成人va在线观看| 一区二区国产精品视频| y97精品国产97久久久久久| 日韩美女免费线视频| 色视频www在线播放国产成人| 国产福利成人在线| 国产精品久久久久久久久借妻| 色爱av美腿丝袜综合粉嫩av|