我有一个用于复制语义的 Objective-C 类。
@property (copy) ViewState* viewState;
它不是一成不变的,但是挂在ViewState
实例上的所有东西都需要自己独特的副本。事实上,如果其他班级错误地尝试
@property (strong) ViewState* viewState;
我们最终会崩溃。
我们如何强制或鼓励客户端类使用正确的语义?
例如,在 C++ 中,我们可以禁止赋值
private:
CPViewState* operator=(const CPViewState*) const; // no implementation
但是我们不能在 Objective-C 中做到这一点。对于相反的情况,我们想要禁止复制,我们可以记录错误或从copyWithZone:
.
我如何才能要求复制语义,或者至少让未来的开发人员清楚他们想要使用复制语义?