我正在编写各种例程,我正在尽力保持整洁和重构.
我正在创建的方法开始看起来与此代码类似:
-(IBAction)buttonPress:(id)sender { // Create Document Shopping List with this document [self doSomething:&error]; if(error) { [NSApp presentError:&error]; return nil; } [self doSomethingElse:&error]; if(error) { [NSApp presentError:&error]; return nil; } [self doYetSomethingElse:&error]; if(error) { [NSApp presentError:&error]; return nil; } }
我喜欢NSError,但这似乎是处理我所有错误的非常笨拙的方式.
我对替代方法的一些想法:
a)错误检查可以内置到doSomething,doSomethingElse等方法中,但是如果不对返回值进行某种检查,我将无法退出按钮按下方法,这会导致我回到类似的结构.
b)我可以将NSError设置为观察到的键值,但是关于这一点的东西感觉非常错误.我非常清楚KVO滥用的可能性,所以我试图在没有它的情况下做任何事情.
当然我错过了一些非常基本的东西吗?有没有一种模式可以帮助我?或者这个结构好吗?
我认为这里提出的答案都没有考虑到Apple推荐的做法.
基本上你不应该检查NSError
对象以确定是否存在问题.通过检查从指向指针的指针的方法返回的值来检查是否存在问题NSError
.
从Apple文档:
重要成功或失败由方法的返回值指示.虽然Cocoa方法,在可可误差区域间接返回错误的对象是保证返回这样的对象,如果该方法直接返回指示失败
nil
或者NO
,您应经常检查返回值是nil
或NO
试图做的任何事情之前NSError
对象.