コピー セマンティクスを対象とした Objective-C クラスがあります。
@property (copy) ViewState* viewState;
不変ではありませんが、ViewState
インスタンスに依存するものはすべて、独自の個別のコピーが必要です。実際、他のクラスが誤って試行した場合
@property (strong) ViewState* viewState;
最終的にはクラッシュします。
クライアント クラスが正しいセマンティクスを使用するように強制または奨励するにはどうすればよいでしょうか。
たとえば、C++ では代入を禁止できます。
private:
CPViewState* operator=(const CPViewState*) const; // no implementation
しかし、Objective-C ではそれができません。コピーを禁止したい反対のケースでは、エラーをログに記録するか、から例外をスローできますcopyWithZone:
。
コピー セマンティクスを要求する方法、または少なくとも将来の開発者にコピー セマンティクスを使用することを明確にする方法はありますか?