[objective-c] 將塊內的變量分配給塊外的變量



Answers

只是提醒我也犯了一個錯誤

 __block

聲明必須在首先聲明變量時完成,即塊的外側,而不是內側。 這應該可以解決有關該變量未在塊之外保留其值的變量中提到的問題。

Question

我收到一個錯誤

變量不可分配(缺少__block類型說明符)

在線aPerson = participant; 。 我如何確保塊可以訪問aPerson變量,並且可以返回aPerson變量?

Person *aPerson = nil;

[participants enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {   
    Person *participant = (Person*)obj;

    if ([participant.gender isEqualToString:@"M"]) {
        aPerson = participant;
        *stop = YES;
    }
}];

return aPerson;



要在block外部分配一個變量,它總是在變量前面使用__block說明符,你的代碼應該是這樣的: -

__block Person *aPerson = nil;



yes塊是最常用的功能,所以為了避免保留週期,我們應該避免使用強變量,包括block內的self,儘管使用_weak或weakself。




Links