gpt4 book ai didi

ios - 警告 : Attempting to create USE_BLOCK_IN_FRAME

转载 作者:行者123 更新时间:2023-11-29 04:46:46 25 4
gpt4 key购买 nike

我在 Xcode 中收到此警告

warning: Attempting to create USE_BLOCK_IN_FRAME variable with blockthat isn't in the frame.

Xcode 将我重定向到我的 NSStream

_naturStream = [[NSInputStream alloc] initWithData:natur];

发生此错误时是随机的,触发时我的应用程序崩溃了。有人尝试过类似的问题吗?

谢谢

编辑

在appDelegate.h中

@property (nonatomic, strong) NSInputStream *naturStream;

在appDelegate.m中:

  NSData *natur = [NSData dataWithContentsOfURL:[NSURL URLWithString:_locString]];

_naturStream = [[NSInputStream alloc] initWithData:natur];

[_naturStream open];



if (_naturStream) {

NSError *parseError = nil;
id jsonObject = [NSJSONSerialization JSONObjectWithStream:_naturStream options:NSJSONReadingAllowFragments error:&parseError];
if ([jsonObject respondsToSelector:@selector(objectForKey:)]) {
for (NSDictionary *natur in [jsonObject objectForKey:@"results"]) {

_poi = [[POI alloc]init];
[_poi setTitle:[natur objectForKey:@"title"]];
[_poi setLat:[[natur objectForKey:@"lat"]floatValue]];
[_poi setLon:[[natur objectForKey:@"lng"]floatValue]];
[_poi setDistance:[natur objectForKey:@"distance"]];
[_poi setWebUrl:[natur objectForKey:@"webpage"]];

[_naturArray addObject:_poi];
}
}
}
else {

NSLog(@"Failed to open stream.");
}

[_naturStream close];
}

我意识到我忘记了[_naturStream close]我不知道它是否解决了问题?

编辑

另一件事,....我使用线程来获取 JSON 数据:

dispatch_queue_t jsonParsingQueue = dispatch_queue_create("jsonParsingQueue", NULL);

// execute a task on that queue asynchronously
dispatch_async(jsonParsingQueue, ^{
[self parseJSON];


dispatch_async(dispatch_get_main_queue(), ^{

[_kortvisning updateAnno];
[visListe updateList];

});
});

// release the dispatch queue
dispatch_release(jsonParsingQueue);

最佳答案

听起来您正在使用 ARC - 如果 _naturStream 是 objective-c 类的实例变量,您可能需要将其取出并添加 __block 引用,以便 ARC 正确了解范围 -但我猜测是因为我不知道该 block 如何与 NSInputStream 一起使用(如果您发布该部分我们可能知道)。很好的一点在这里:http://nachbaur.com/blog/using-gcd-and-blocks-effectively

-- 编辑--

好吧,现在您已经发布了其余部分,我敢打赌它与 _kortvisningvisListe 变量有关。我认为您想在创建队列后立即将其取出,例如

__block KortVisning *localKortVisning = _kortvisning;
__block NSMutableArray *localVisListe = visListe;

然后直接从您发送回主队列的最终完成处理程序访问这些内容。

关于ios - 警告 : Attempting to create USE_BLOCK_IN_FRAME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9516429/

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