iOSiosiOS_NSError

About NSError

2016-05-26  本文已影响630人  黑羽肃霜

综述

之前看到很多NSError的用法,一直颇为费解。这里先抛出两种常出现的形式来讨论

示例一 —— NSError* 定义的对象和 &error

NSError *err     = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic
                                                   options:NSJSONWritingPrettyPrinted
                                                     error:&err];

我们可以看到,经常我们传入的 err都是一个地址,再来看函数原型。

+(nullable NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;

发现我们要传入的类型其实是 (NSError**)其实也就是这个对象指针的指针,也就是指针的地址。
err 是对象,也是对象的指针。所以 &error 对应的也就是 (NSError**)

示例二 —— (NSError**) 和 *error

-(void)printImage:(UIImage *)image error:(NSError **)error{
  if (![self print_Image:image]) { // 表示产生了错误
      *error = [NSError errorWithDomain:@"Print Error"
                                   code:01
                               userInfo:nil];
  }
}
[NSError errorWithDomain:@"Print Error" // 域名
                      code:01           // 错误代码
                  userInfo:nil]         // 字典描述
上一篇下一篇

猜你喜欢

热点阅读