Objective-c中是否存在类似Python generator的内容?
我在几个地方都有以下代码,所以有什么方法可以简化它吗?
int maxWinInRow = [self maxWinInRow];
// how many wins in row
for (int i=1; i <= maxWinInRow; i++) {
NSString * key = [NSString stringWithFormat:@"%d",i];
NSNumber * value = [_winsInRow valueForKey:key ];
int numbeOfWinInRow = value.intValue;
// only this line is specific
gameScore = gameScore + ( pow(6,i) * numbeOfWinInRow);
}
答案 0 :(得分:2)
具体而言,Objective C编程语言中没有内置的生成器模式。然而,随着&#34;块&#34;的引入在Objective C(和带有LLVM的C)中,在Objective C中构建自己的生成器模式已经有可能了。
如果您认真学习这一点,可以通过Mike Ash审核this article。
但是,在使用块时请务必谨慎,因为它偶尔会产生额外的内存管理开销,否则可能会导致应用程序中潜在的内存泄漏。因此,如果您想使用所描述的模式,请确保您对&#34; blocks&#34;有正确的理解。否则,我总是建议你重构你的代码来构建一个基本方法,它可以作为Wain所描述的存根。当然,不会允许模式暗示的延迟初始化。但是,它在Objective C中比一个解决方案更好。