古い投稿はかなりよく説明しています:なぜinitメソッドでアクセサメソッドを使用しないのですか?
しかし、私の質問は次のとおりです。
Q. Objective Cのサブクラスのアクセサメソッドをオーバーライドしていない場合、で使用しても安全init
ですか?
古い投稿はかなりよく説明しています:なぜinitメソッドでアクセサメソッドを使用しないのですか?
しかし、私の質問は次のとおりです。
Q. Objective Cのサブクラスのアクセサメソッドをオーバーライドしていない場合、で使用しても安全init
ですか?
If I am not overriding accessor methods in sub class in Objective C, is it safe to use?
回答:self.accessorを使用しないでください。
20年以上のアップルデベロッパ(cocoa、obj-c)での2年以上の実務経験から、私が学んだことは同じです。
多くの場合、私たちのチームはそれらをすべて削除するように求められ、必要であったとしても、他のデザインパターンまたは方法を使用するように案内されました。
nonatomic
オブジェクトがとして作成され、多くのスレッドが同じプロパティ/オブジェクトで動作している場合、これにより問題が発生する可能性があります。self.
クラス/オブジェクトをバインドします。iosにタグを付けたので、以前のバージョンのiosの場合はこれを行うことができましたが、現在iosはkvoをサポートしているため、この方法に従うべきではありません。
通常、KVOメカニズムが部分的に初期化されたオブジェクトまたは部分的に割り当て解除されたオブジェクトにアクセスするのを防ぐことは避けられます。これは、特にアプリケーションのユーザーインターフェイスでバインディングとKVOが大きな役割を果たすMacOSX開発に特に当てはまります。私はiPhone開発者ではありませんが、iPhoneプラットフォームでもKVOを使用している場合は、メソッドでアクセサメソッドを使用しないようにするのが十分な理由かもしれませinit
んdealloc
。
KVOは、プロパティの変更を簡単に監視できるように、クラスの動的サブクラスを作成します。
init
とでそれらを回避するのは簡単dealloc
です。Appleの推奨事項に関係なく、どこでもアクセサメソッドを使用する方が簡単であると主張する人もいますが、慣例では、アクセサメソッドの使用を避け、慣例に従うことでinit
、dealloc
現在問題が発生していなくても、後で害が少なくなることを意味します。
Appleのベストプラクティスでは、自分自身を使用しないでください。initまたはdeallocメソッドの場合のアクセサー。おそらく大丈夫でしょうが、基本的にAppleはそれを保証することはできません。