gpt4 book ai didi

objective-c - 在 Objective-C 中维护表示不变量

转载 作者:太空狗 更新时间:2023-10-30 03:51:17 26 4
gpt4 key购买 nike

我是 Objective-C 的新手,正在尝试弄清楚维护类的表示不变性的最佳方法是什么,因为异常实际上并不是强制执行它们的合适方法。一个很好的例子是 Fraction 类,它在 Kochan 的 Programming in Objective-C 中作为一个例子,它有这个 setter 方法:

-(void) setDenominator: (int) d {
self.denominator = d;
}

所以说你的代表不变要求的一部分 self.denominator != 0。例如,在 Java 中,强制执行该不变性的最直接方法是在传递 0 时抛出 IllegalArgumentException,但这在 Objective-C 中没有意义。另一种方法是添加一个 NSError** 指针参数来报告问题,但这似乎既过分又不符合抽象的本质——不像,比如说,数据库连接,我们不希望在正常使用中出现零分母分数。那么这里最干净的解决方案是什么?返回整数错误代码?还有什么我想念的吗?

最佳答案

你可以使用 NSAssert() :

- (void)setDenominator:(int)d
{
NSAssert(d != 0, @"denominator cannot be 0");
self.denominator = d;
}

关于objective-c - 在 Objective-C 中维护表示不变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13754110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com