gpt4 book ai didi

ios - block 执行后变量返回 null

转载 作者:行者123 更新时间:2023-11-28 20:27:54 29 4
gpt4 key购买 nike

我正在调度队列以在单独的线程(在 viewWillAppear 中)上下载一些 flickr 照片。当我在 block 中记录数组的内容时,它完美地显示了所有内容:

    dispatch_queue_t photoDowonload=dispatch_queue_create("photoDownload", NULL);
dispatch_async(photoDowonload, ^{

NSArray *photoList=[FlickrFetcher topPlaces]; //downloads flickr data
self.listOfCities=photoList;
NSLog(@"inside block: %@", self.listOfCities); //shows contents

});

但是当我尝试记录在 block 外的 block 内设置的数组时,它返回 null。

    dispatch_queue_t photoDowonload=dispatch_queue_create("photoDownload", NULL);
dispatch_async(photoDowonload, ^{

NSArray *photoList=[FlickrFetcher topPlaces];
self.listOfCities=photoList;

});

NSLog(@"after block: %@", self.listOfCities); //returns null

这里有什么问题? self.listOfCities 被设置为 NSArray 属性,所以一旦它被设置在 block 中,它应该可以在它之外访问。

最佳答案

block 中的代码是异步运行的。因此 block 之后的代码在 block 中的代码有机会运行(或肯定至少完成)之前运行。

关于ios - block 执行后变量返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13350108/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com