繁体   English   中英

Autoreleasepool和dispatch_async

[英]Autoreleasepool and dispatch_async

我读了关于GCD的文章,有一个例子:

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

如果我将该方法放在click处理程序中(将在autoreleasepool中调用),我将丢失stringValue,因为autoreleasepool将在点击事件后被销毁吗?

在内部区域内? 不,你不会失去这个价值。 当在块内引用Objective-C对象变量(尚未声明为__block )并复制该块时,将自动保留该对象。 释放块时,该对象也将被释放。 dispatch_async()负责复制和释放块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM