0

古い投稿はかなりよく説明しています:なぜinitメソッドでアクセサメソッドを使用しないのですか?

しかし、私の質問は次のとおりです。

Q. Objective Cのサブクラスのアクセサメソッドをオーバーライドしていない場合、で使用しても安全initですか?

4

3 に答える 3

0

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をサポートしているため、この方法に従うべきではありません。

于 2012-12-09T04:10:53.073 に答える
0

通常、KVOメカニズムが部分的に初期化されたオブジェクトまたは部分的に割り当て解除されたオブジェクトにアクセスするのを防ぐことは避けられます。これは、特にアプリケーションのユーザーインターフェイスでバインディングとKVOが大きな役割を果たすMacOSX開発に特に当てはまります。私はiPhone開発者ではありませんが、iPhoneプラットフォームでもKVOを使用している場合は、メソッドでアクセサメソッドを使用しないようにするのが十分な理由かもしれませinitdealloc

KVOは、プロパティの変更を簡単に監視できるように、クラスの動的サブクラスを作成します。

initとでそれらを回避するのは簡単deallocです。Appleの推奨事項に関係なく、どこでもアクセサメソッドを使用する方が簡単であると主張する人もいますが、慣例では、アクセサメソッドの使用を避け、慣例に従うことでinitdealloc現在問題が発生していなくても、後で害が少なくなることを意味します。

于 2012-12-09T03:44:43.130 に答える
0

Appleのベストプラクティスでは、自分自身を使用しないでください。initまたはdeallocメソッドの場合のアクセサー。おそらく大丈夫でしょうが、基本的にAppleはそれを保証することはできません。

于 2012-12-09T03:41:38.400 に答える