簡體   English   中英

Objective-c 中是否存在像 Python 生成器這樣的東西?

[英]Does something like Python generator exist in objective-c?

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

具體來說,Objective C 編程語言中沒有內置這樣的生成器模式。 然而,隨着在 Objective C(以及帶有 LLVM 的 C)中引入“塊”,在 Objective C 中構建自己的生成器模式變得有些可能。

如果您想認真學習,可以閱讀 Mike Ash 的這篇文章

但是,在使用塊時請小心,因為它偶爾會導致額外的內存管理開銷,否則可能會導致您的應用程序中潛在的內存泄漏。 因此,如果您想使用所描述的模式,請確保您對“塊”有正確的理解。 否則,我總是建議您重構代碼以構建一個基本方法,該方法將作為 Wain 所述的存根工作。 當然,這不會允許模式所暗示的延遲初始化。 然而,在 Objective C 中,這是一個總比沒有好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM