我知道这似乎是一个非常基本的问题,但我一直认为解释(和理解)基本问题是构建干净和有效代码的关键。在Xcode中运行“分析”我得到了著名的“潜在的空提领”创建错误时在处理NSError时理解'潜在的空解除引用'
-(BOOL)validateForInsert:(NSError *__autoreleasing *)error {
[super validateForInsert:error];
return [self validateInternal:error];
}
-(BOOL)validateInternal:(NSError *__autoreleasing *)error {
// checking attributes and build userInfo error
if(anyErrors) {
*error = [NSError errorWithDomain:appDomain code:200 userInfo:details];
return NO;
}
return YES;
}
: 我的代码在CoreData实体下面的代码片段。虽然编译器没有提供任何警报,并且代码一直工作。 这也可能是一个问题,为什么编译器没有提醒我这个问题?但是到代码中,我完全知道这个解决方案,它是检查(错误!=无),但是我在这方面很迷茫。 问题从一开始就在NSError * _autoreleasing *的意思,为什么周围的明星?哪一个应该是一个指针指针?
假设我想调用validateForInsert:我自己如何构建* _autoreleasing *对象?
下面的问题,我想是与上面的问题有关:如果我从头开始构建*错误,为什么我想检查是否为零?
最后但并非最不重要的是,代码工作正常,错误被拦截,请问您能否发现可能导致错误或崩溃的案例?正如我所说我正在使用CoreData,一个通用的例子会很好,但另一个与CoreData有关的赞赏。
感谢
我完全错过了autoreleasing的含义,我把它想成是一个变量名!感谢您的解释,对我来说,标记为答案已经足够了。 – Leonardo 2012-08-17 12:17:28
不客气。 – 2012-08-17 12:22:55