0
我正在制作一款纸牌游戏,每次点击重新处理按钮时都需要重置。要做到这一点,我使用以下逻辑:使用getter进行懒惰实例化是不是很好的做法?
- (IBAction)redealClicked:(UIButton *)sender {
self.cardGame = NULL;
self.cardGame; //re-initialize before updating UI
[self updateUI];
}
我做吸气延迟实例化,所以我想我可能会迫使它懒洋洋地实例重置我的比赛。 XCode给我一个警告,说吸气剂不应该用于副作用。从技术上讲,这正是我所做的,但懒惰的实例化是一种特殊情况?
至于为什么我在包含“self.cardGame”这一行时,而不是仅仅让它懒惰地实例化它:在程序中出现的时候,我在[self updateUI]访问的实例中翻转了一些布尔值首先访问self.cardGame。
正在初始化self.cardgame也会更改一些变量,这些变量将启用/禁用[self updateUI]中的按钮。所以我必须重新初始化[自我更新UI] – user3152741
这是糟糕的设计。 getter(及其延迟加载)应该只更新属性的数据。没有其他的。如果您需要更新UI,请在'updateUI'方法中执行,而不是getter方法。 – rmaddy
我需要在每次重置游戏时将布尔值设置为true,因此在游戏的实例化中它是迄今为止最方便的解决方案。不管它是否仍然是糟糕的设计? – user3152741