NSDate和@protocol

可以利用NSTimer當作遊戲時鐘。

NSTimer*  _gameTimer = [NSTimer scheduledTimerWithTimeInterval:多久觸發一次(NSTimeInterval)target:(id)selector:(sel) userInfo:(id)repeate:(BOOL)];

NSTimer裏的fireDate是記錄動作觸發的時間

timerIntervalSinceDate:(NSDate);記錄時間的差值


上級讓下級做事直接通過set/get的類似方法,而下級想讓上級做事,就必須要通過協議和委託

協議的定義是寫在下級裏面,協議的遵從是上級遵從,協議的實現也是上級去設置。就好比說下級設置了文本想顯示到上級視圖上去,這時候就得用協議與委託


步驟:

1、先在下級的.h文件中定義協議         定義協議部分

@protocol  類名delegate<...>

- 方法名 //此處是聲明

@end

2、在下級的接口中定義代理     //內部定義部分

@property(weak,nonatomic) id<類名delegate>  delegate;

在.m文件中 委託代理執行方法   //傳遞部分

[_delegate 方法名:參數];

3、在上級的.h文件中,接口要遵從協議,記得#import

實現代理方法  //此處是實現

注意:內部定義和傳遞是重要的部分

還有一個要求設置成委託方的代理

例子:

在viewcontroller中有個prepareForSegue:segue sender

所有在storyboard中的連線在推出新的視圖控制器(之前)都會調用這個方法

segue就是視圖傳遞的那根線

可以通過segue的一個屬性獲取到目標視圖控制器

[segue destinationViewController] 在此視圖控制器裏將委託設置成self(也就是上級)  setDelegate:self













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章