MyViewController
来自一个名为
MotionListener
但是我在翻译苹果对
target-action
变成一个可行的命令。
目标动作是一种设计模式,在该模式中,一个对象持有向另一个对象发送消息所需的信息
动作选择器,用于标识要调用的方法,以及
目标,即接收消息的对象。]
1
在示例中
(如下)
具有
myButton
fromButtonInSubview
无论何时按下
[mySyncButton addTarget:self.delegate
action:@selector(fromSyncButtonInSubview:)
forControlEvents:UIControlEventTouchUpInside];
我假设为了发送一个不是来自
UIButton,
我还需要申报协议
[a]
[c]
并包括初始化方法
@protocol SyncDelegate <NSObject>
-(void)fromSync:(int)clock;
@end
@interface MotionListener : NSObject {
}
[b]
- (id) initMotionSensingWith:(float)updateInterval;
[c]
@property (assign) id<SyncDelegate> delegate;
@end
并在接口中声明协议
[d]
[d]
@interface PlayViewController : UIViewController <SyncDelegate>
[e]
- (void)fromSync:(int)clock
{
NSLog(@"tick"); // do stuff and show
}
MyViewController,
进口
MotionListener
,在实现中声明
并定义代表
[h]
#import "MotionListener.h"
[g]
MotionListener *sync = [[MotionListener alloc] initMotionSensingWith:(float)updateInterval];
[h]
sync.delegate = self;
到
MyViewController.
我知道这会产生
addTarget:self.delegate
和
action:@selector(fromSync:)
在
UIButton
实例
在任何人建议之前
NSTimer selector,
我已经在50赫兹的时钟,而同步信号是1赫兹
例如
[NSTimer scheduledTimerWithTimeInterval:0.02; // 50 Hz
target:self
selector:@selector(motionRefresh:)
userInfo:nil
repeats:YES];
- (void)motionRefresh:(id)sender
{
count = (count + 1) % 50; // every 1 second
if (count == 0 )
{
// send the sync message here
// EDIT
NSLog(@"sending %i", count);
[self.delegate fromSync:(int)count];
}
}
所以我的问题是:使用代理,我如何每次发送同步消息
count
转动
0