在不使用指针的情况下,在 Objective C 中表示可能类型的最佳方法是什么?我不能简单地使用指向对象的指针,因为指向对象的指针不是对象,我需要它是对象。
我知道做到这一点的一种方法是为我拥有的每个对象创建一个自定义类,这将产生诸如 MaybeEmployee、MaybeOrderStatus 之类的类以及更多自定义类。这会起作用,但它看起来很笨拙,根本不是一个很好的解决方案。
第二种方法,简单地使用一个 Maybe 类似乎也是错误的。缺乏类型安全是很糟糕的。
在不使用指针的情况下,在 Objective C 中表示可能类型的最佳方法是什么?我不能简单地使用指向对象的指针,因为指向对象的指针不是对象,我需要它是对象。
我知道做到这一点的一种方法是为我拥有的每个对象创建一个自定义类,这将产生诸如 MaybeEmployee、MaybeOrderStatus 之类的类以及更多自定义类。这会起作用,但它看起来很笨拙,根本不是一个很好的解决方案。
第二种方法,简单地使用一个 Maybe 类似乎也是错误的。缺乏类型安全是很糟糕的。
left2 有正确的想法。使用 NSNull 来表示“可能不是”的情况。
处理它的最简单方法是让您的方法返回一个类型为 id 的对象,但正如您所说,这会牺牲类型安全。
我建议创建一个祖先类 MaybeClass 并让您的所有类都从中派生。然后你可以创建一个特定的子类可能不是真的是一个 NSNull。
请注意,您也可以只使用标准对象,并在方法调用的结果为空时返回 nil。Objective C 比许多其他语言更干净地处理 nil 对象指针。向 nil 对象发送消息是完全有效的。他们只是被丢弃。
我不确定“可能类型”对您来说究竟意味着什么,但是有什么理由id
不能满足您的需求吗?
我也不确定您所说的“可能类型”是什么意思!协议可以是你想要的,有些类实现了协议,而另一些则不是。他们可以检查对象是否实现它[yourObject conformsToProtocol:@protocol(yourProtocol)]。我希望这会有所帮助,但如果没有更多的澄清会很好。