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

2 投票
1 回答
703 浏览
提问于 2025-04-18 01:09

在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 中,这总比什么都不做要好。

撰写回答