iOS中 在ARC环境下使用NSException要注意的问题
HKCTClient* client; NSString* restaurant_pass; NSMutableDictionary* dic; restaurant_pass = [EncUtil encodeDESToHex:DES_KEY value:password]; client = [[HKCTClient alloc] init]; client.baseUrl = API_BASE_URL; client.subUrl = @"restaurant/login"; client.secretKey=@""; client.restaurantId = restaurantId; [client addString:restaurant_pass forKey:@"restaurant_pass"]; [client doGet]; dic = [client getResult]; NSDictionary* infoDic = [dic valueForKey:@"info"]; HKCTRestaurant* o = [HKCTRestaurant buildFromJsonDic:infoDic]; if (o) { [self setSecretKey:o.password]; } return o;
?其中红色的句子会抛出异常,但是编译器无法识别,于是ARC的方式,就无法知道该如何进行变量的release工作。因此导致client等对象在一场逻辑时无法释放。
?
解决方式就是不使用异常。把错误信息通过输出参数或者返回值的方式传递到调用者。