1

次のような iVar とプロパティの違いに関するいくつかの質問を読みました:なぜ ivar を使用するのですか?
ios インターフェイス iVar とプロパティ

私が知りたいのは... UIViewController(たとえば)複数のメソッドでアクセスする必要があるBOOLを作成している場合、これらを作成する最良の方法は何ですか?

現在、プロパティを作成しています。これは正常に動作し、期待どおりです。しかし、私が読んだり学んだりすると、iVar を作成する方がパフォーマンスが向上するようです。

お気に入り:

@interface ViewController : UIViewController{
BOOL myBool;
}

これはパフォーマンスの点で優れているでしょうか。一方の値を YES に設定すると、複数のメソッドがこの iVar にアクセスできますか?もう一方の値をチェックできますか?プロパティ アプローチでできるように?

4

4 に答える 4

4

一方の値を YES に設定すると、複数のメソッドがこの iVar にアクセスできますか?もう一方の値を確認できますか?

もちろん、値を に設定しても可能ですNO。これはインスタンス変数であるため、1 つのインスタンスのすべてのメソッド間で共有されます。

これはパフォーマンスのために良いでしょうか

いいえ、フレームごとに 2^20 回など、非常に頻繁にプロパティにアクセスしない限り。iVar とプロパティのパフォーマンスに関するこの Big Nerd Ranch の投稿をご覧ください。通常、パフォーマンスの向上は明快さの損失に値しません。

于 2013-10-17T23:05:30.853 に答える
1

For your purpose an ivar would be equivalent to using a property. Performance-wise the ivar is slightly better because you access it directly, whereas with a property you invoke a method (getter or setter) that was generated by the compiler in the background.

I wouldn't worry about performance, though. Typically the difference will be negligible. Unless you have some really special need, I would always use properties because it usually results in clearer code. It's also a good habit to have getter and setter methods - even if they are generated by the compiler for you - because they encapsulate the data of your class.

于 2013-10-17T23:03:04.217 に答える