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