让我首先描述我的情况。我有一个ViewController,它保留了一个GameManager
的实例。 GameManager
类封装了简单游戏的状态和逻辑。当GameManager
中遇到某些状态时,我想执行一系列操作。例如:当游戏结束时,我想在对话框上显示游戏。如上所述,游戏逻辑位于GameManager
,但是创建和定位新游戏的方法是在GameManager
。对话框驻留在ViewController中。允许GameManager
拨打电话'回到ViewController,我在分配时将ViewController的引用传递给// GameManager.m
- (void) gameOver {
[self.viewController showGameOver];
}
,并简单地调用ViewController上的方法。例如:
{{1}}
我的问题是:这是正确的,客观的方法吗?有更纯粹的方法来处理这个问题吗?我虽然使用积木可能更合适。
答案 0 :(得分:0)
在此处实施delegation
模式
在你的GameManager中
@protocol MyGameDelegate : <NSObject>
@required
- (void)gameManager(GameManager *)gameManager gameOverWithSuccess:(BOOL)success;
@end
并声明属性
@property (assign, nonatomic) id <MyGameDelegate> gameDelagate;
// MyGameDelegate implementation
- (void)gameManager(GameManager *)gameManager gameOverWithSuccess:(BOOL)success {
if (success) [self.viewController showGameOver];
}
做这样的事情,但要小心
@property (assign, nonatomic) id <MyGameDelegate> gameDelagate;
您使用not
strong
最后将gameDelagate设置为您的viewcontroller
希望你能理解。