Autoreleasepool va dispatch_async

Men GCD haqidagi maqolani o'qidim va misol bor:

dispatch_queue_t bgQueue = myQueue;
dispatch_async(dispatch_get_main_queue(), ^{
    NSString *stringValue = [[[textField stringValue] copy] autorelease];
    dispatch_async(bgQueue, ^{
       //use stringValue in the background now
    });
});

Ushbu usulni bosish operatorida (autoreleasepool deb ataladigan) joylashtirsam, stringValue yo'qotishim mumkin, chunki autoreleasepool tugma hodisasidan keyin yo'q qilinadi?

3

1 javoblar

U ichki blok ichida? Yo'q, bu qiymatni yo'qotmaysiz. Ob'ektiv-C ob'ektli o'zgaruvchining (agar __ block deb e'lon qilinmagan) bloklar ichida havola qilinayotgan bo'lsa va blok ko'chirilsa, u ob'ekt avtomatik saqlanadi. Blok bo'shatilganda, u ob'ekt ham chiqariladi. dispatch_async() blokni nusxalash va tarqatish uchun javobgardir.

9
qo'shib qo'ydi
Keling, bu ma'no beradi, rahmat
qo'shib qo'ydi muallif INs, manba