在objective-c中是否存在类似Python生成器的东西?

时间:2014-04-03 12:09:58

标签: python ios objective-c cocoa

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);
}

1 个答案:

答案 0 :(得分:2)

具体而言,Objective C编程语言中没有内置的生成器模式。然而,随着&#34;块&#34;的引入在Objective C(和带有LLVM的C)中,在Objective C中构建自己的生成器模式已经有可能了。

如果您认真学习这一点,可以通过Mike Ash审核this article

但是,在使用块时请务必谨慎,因为它偶尔会产生额外的内存管理开销,否则可能会导致应用程序中潜在的内存泄漏。因此,如果您想使用所描述的模式,请确保您对&#34; blocks&#34;有正确的理解。否则,我总是建议你重构你的代码来构建一个基本方法,它可以作为Wain所描述的存根。当然,不会允许模式暗示的延迟初始化。但是,它在Objective C中比一个解决方案更好。