首先我想说我是Objective C和iPhone世界的初学者,到目前为止我真的很喜欢它,它真的很有趣。
我来自 PHP 世界,并尝试采用 Objective C 的一些非常不同的概念,例如需要释放自己的对象以避免内存泄漏。
但是我有一个小问题,当我在函数结束时释放超过 1 个变量时,应用程序EXC_BAD_ACCESS
由于某种原因崩溃并出现错误。我敢肯定它的东西小而愚蠢,但我有点无能为力。
感谢您的指导,这是我的代码:
+ (id) getJsonFromURL: (NSURL *)url withQueryString: (NSString *)queryString withMethod: (NSString *)HTTPMethod error: (NSError **)outError{
// Initialize request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
NSData *requestData = [NSData dataWithBytes:[queryString UTF8String] length: [queryString length]];
// Set request data and method
[request setHTTPMethod:HTTPMethod];
[request setHTTPBody:requestData];
// Perform request
NSURLResponse *uResp = nil;
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&uResp error:nil];
// Make sure HTTP Request was successful (HTTP Code 200)
NSInteger httpStatus = [((NSHTTPURLResponse *)uResp) statusCode];
if(httpStatus != 200){
NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
[userInfo setValue:[NSString stringWithFormat:@"The requested URL could not be read (HTTP Code: %d)", httpStatus] forKey: NSLocalizedDescriptionKey];
}[NSException raise:@"MerchGuru.BadURL" format:@"The URL couldn't be read (HTTP Code: %d)", httpStatus];
// Decode JSON Output
NSError *jsonError = nil;
id respData = [[CJSONDeserializer deserializer] deserialize:returnData error:&jsonError];
if(jsonError != nil){
if(outError != nil){
NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
[userInfo setValue:@"The JSON Output provided isn't valid JSON!" forKey:NSLocalizedDescriptionKey];
*outError = [NSError errorWithDomain:@"com.freak4pc.merchguru" code:6001 userInfo: userInfo];
[userInfo release];
NSLog(@"%@", [*outError localizedDescription]);
}
[respData release];
[jsonError release];
[returnData release];
[uResp release];
[requestData release];
[request release];
return nil;
}else{
[respData release];
[jsonError release];
[returnData release];
[uResp release];
[requestData release];
[request release];
return respData;
}
}
谢谢 :) 谢。