性能差点の表記に対すメソッドの呼び出しで、Objective-C
-
09-06-2019 - |
質問
利用できる標準のドット表記はメソッドの呼び出しで、Objective-CにアクセスオブジェクトのプロパティにはObjective-C
myObject.property = YES;
または
[myObject setProperty:YES];
は違性能(アクセス性)?はそれだけで好みの問題点のコーディングスタイル?
解決
ドット表記へのアクセス権にObjective-C は メッセージを送り、ブラケット表記です。●それは、このような:
@interface Foo : NSObject
@property BOOL bar;
@end
Foo *foo = [[Foo alloc] init];
foo.bar = YES;
[foo setBar:YES];
最後の二つのラインをコンパイルも全く同じです。この変更これはプロパティがある場合は、 getter
および/または setter
指定されたattribute;しかし、なにより変化からどのようなメッセージが送信されないかどうかのメッセージを送り:
@interface MyView : NSView
@property(getter=isEmpty) BOOL empty;
@end
if ([someView isEmpty]) { /* ... */ }
if (someView.empty) { /* ... */ }
両方のラインをコンパイルの更.
他のヒント
チェック 記事はココアはファミリー向けの.の概要ではありませんの性能の違約金を渡します。
しかし、表記なが従来よりも難しくなっているかご変数のほとんど変数です。
の時間をつけてください性能差がない場合マーク物件として"nonatomic".そして@合成と自動的に追加の同期コードの設定において、資産、そのスレッドに対して安全が遅くなる設定です。
このように多いと思いまを定義したい物件のように:
@property(nonatomic、保存したり)NSString*myProp;
個人的にはどのようにドット表記の一般に役立つからない考えなければいけない文書の正しい設定機能メソッドではな些細なもnonatomicセッターなければならないので、も忘れずにリリースの古い値。利用テンプレートコードの助けができなくとも一般的に繰り返しコードclutters。
パターンを認識す:設定されていない場合は、セッター(く@合成-創造していくかについて)して、その副作用の設定値にすべきか、セッターは、通常のメソッドの代わりに呼び出し用の表記です。●
意味的に利用特性が直接アクセスを実際の値は、呼び出し側が何よって変化するかを考察することで行います。メッセージを送信する、アクセス(もう両方のメッセージを送信する).
どん見えるというものはありませんで顕著なパフォーマンスの違います。私は合理的に一定のほとんどの場合では'作成"を降りてすぐのところに同じコードです。
まず、筆記試験アプリはそれぞれの方法を百万倍ので、最新のタイミングです。■学び続けることにある(この場合によって異なります。)
またこのブログをポストココアの愛:
http://cocoawithlove.com/2008/06/speed-test-nsmanagedobject-objc-20.html
が、著者を比較し、速度カスタムアクセス用メソッドは、ドット表記法NSManagedObject、見つけました。しかし、KVCアクセス(setValue:forKey:ある程度遅くなります。