gpt4 book ai didi

objective-c - NSURLConnection 发送异步请求 :queue:completionHandler not working in iOS 4. 3

转载 作者:行者123 更新时间:2023-11-28 18:07:10 25 4
gpt4 key购买 nike

我在我的应用程序中使用 [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)。通过使用这个,我的应用程序在 iOS 4.3 中被终止,但它在 iOS 5.0 中运行良好。

如何在 iOS 4.3 中使用它,任何人都可以帮助我。

最佳答案

这是适合我的完整实现。您可以随意重命名它并将其添加为 NSURLConnection 上的类别,或者仅将其添加为您正在使用的类中的本地方法。

-(void)sendAsynchronousRequest:(NSURLRequest*)request queue:(NSOperationQueue*)queue completionHandler:(void(^)(NSURLResponse *response, NSData *data, NSError *error))handler
{
__block NSURLResponse *response = nil;
__block NSError *error = nil;
__block NSData *data = nil;

// Wrap up synchronous request within a block operation
NSBlockOperation *blockOperation = [NSBlockOperation blockOperationWithBlock:^{
data = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:&error];
}];

// Set completion block
// EDIT: Set completion block, perform on main thread for safety
blockOperation.completionBlock = ^{

// Perform completion on main queue
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
handler(response, data, error);
}];
};

// (or execute completion block on background thread)
// blockOperation.completionBlock = ^{ handler(response, data, error); };

// Execute operation
[queue addOperation:blockOperation];
}

编辑我必须修改该方法,因为我在我的完成 block 中进行 UIKit 调用(例如更新标签等)。所以在主线程上调用完成 block 实际上更安全一些。 (原版已注释掉)

关于objective-c - NSURLConnection 发送异步请求 :queue:completionHandler not working in iOS 4. 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10860167/

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