gpt4 book ai didi

ios - 'initWithRequest :delegate:' is deprecated: first deprecated in iOS 9. 0 - 使用 NSURLSession(参见 NSURLSession.h)

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:49 24 4
gpt4 key购买 nike

我是 objective-c 中的新手,使用 iOS 9 Xcode 7.2 并收到此警告“'initWithRequest:delegate:'已弃用:在 iOS 9.0 中首次弃用 - 使用 NSURLSession(请参阅 NSURLSession.h)”如何解决它。我的代码如下。

+(id)createGetConnectionWithName:(NSString*)strConnectionName_
withUrl:(NSString *)pageUrl
parameterNames:(NSArray *)arrParamNames
parameterValues:(NSArray *)arrParamValues
delegate:(id)delegate
{
NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"%@",pageUrl]];

NSMutableString *post =[NSMutableString string];
for(int i=0;i<[arrParamNames count];i++)
{
if(i==[arrParamNames count]-1)
{
[post appendFormat:@"%@=%@",[arrParamNames objectAtIndex:i],
[arrParamValues objectAtIndex:i]];
}
else
{
[post appendFormat:@"%@=%@&",[arrParamNames objectAtIndex:i],
[arrParamValues objectAtIndex:i]];
}
}
// if(![strConnectionName_ isEqualToString:APP_AUTH_CODE_NAME])
// [post appendFormat:@"&Key=%@",[self getAuthCode]];

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];

// conn =[[NSURLConnection alloc] initWithRequest:request delegate:self] ;
return [[self alloc] initWithRequest:request delegate:delegate];

}

提前致谢。

最佳答案

不了解上下文,就不好说了。这看起来可能是 NSURLConnection 类别的一部分,在这种情况下,您必须将其转换为 NSURLSession 类别中的实例方法(使其创建数据任务),然后将整个代码库转换为使用NSURLSession.

几个大障碍:

  • 您不能只将 NSURLSession 放入使用 NSURLConnection 的代码中,因为委托(delegate)方法完全不同。
  • NSURLConnection 使用每个请求委托(delegate),而 NSURLSession 使用每个 session 委托(delegate)。

结果是,这可能是对代码的主要更改,具体取决于委托(delegate)方法的复杂程度。如果您实际上没有使用委托(delegate)(或者没有对它们做太多事情),那么这是一项微不足道的任务。

或者只是做

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

// offending line of code goes here

#pragma clang diagnostic pop

别担心。如果 NSURLConnection 很快就消失了,我会感到惊讶,因为如果它消失的话,会破坏多少代码。如果我错了,至少你会把这个问题搁置一段时间。 :-)

关于ios - 'initWithRequest :delegate:' is deprecated: first deprecated in iOS 9. 0 - 使用 NSURLSession(参见 NSURLSession.h),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36350581/

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