我是 Objective-C 的新手,并试图弄清楚维护类的 rep 不变量的最佳方法是什么,因为异常并不是真正执行它们的适当方式。出现这种情况的一个很好的例子是在 Kochan 的Objective-C 编程中Fraction
作为示例的类中,它具有这个 setter 方法:
-(void) setDenominator: (int) d {
self.denominator = d;
}
所以说你的代表不变要求的一部分self.denominator != 0
。例如,在 Java 中,强制执行该不变量的最直接方法是抛出一个IllegalArgumentException
if 0 被传递,但在 Objective-C 中这没有意义。另一种方法是添加一个NSError**
指针参数来报告问题,但这似乎既是矫枉过正,又不适合抽象的性质——与数据库连接不同,我们不期望零分母分数在正常使用中出现。那么这里最干净的解决方案是什么?返回一个整数错误代码?还有什么我想念的吗?