Objective-C中是否存在类似Python生成器的东西?
在Objective-C中有没有类似于Python生成器的东西呢?
我在几个地方都有以下这段代码,是否有办法简化一下呢?
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);
}
1 个回答
2
具体来说,Objective C 编程语言里并没有内置的生成器模式。不过,自从引入了“块”(blocks)这个概念后,在 Objective C(以及使用 LLVM 的 C 语言)中,自己实现生成器模式变得有可能了。
如果你真的想深入了解这个内容,可以看看 Mike Ash 的这篇文章。
不过,在使用块的时候要小心,因为这有时会增加内存管理的负担,或者可能导致你的应用出现内存泄漏。所以如果你想使用上面提到的模式,确保你对“块”有足够的理解。否则,我建议你重构一下代码,写一个基本的方法来作为你的占位符,正如 Wain 所说的那样。虽然这样做不能实现模式所暗示的懒加载,但在 Objective C 中,这总比什么都不做要好。