可以利用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