iPhone Devを用いてゲッターと同じクラス
-
10-07-2019 - |
質問
(だいた学習開発のためのキャラクターすべてがフルボイスに感と呼ばれるものに始iPhone3開発のSDKやってないのだろうかと思いインターフェースビルダー) いつもの理由のゲッターと同じクラスの場合、個人会員は、目で見てわかるものなの?のように変換される。h,有
NSObject *myObj;
...
@property (nonatomic, retain)NSObject *myObj;
その後、Foo.m、アクセス会員 myObj を使用します。myObjまたは[自myObj])?ありだから本作は、こしょうを書くのアプリケーションでその確認の場合UIViewController会員は、superview):
if(self.yellowViewController.view.superview == nil) {
通知の 自己.yellowViewController...) はありませんが理由。あるひとつのアイディアを出しているのはその会員blueViewControllerクラスはBlueViewControllerいるのだと思いる場合であってもおかしくないのではない混乱を引き起こすこと.のではありいつでも場所をゲッターと同じクラスは必要?
感謝!!
解決
はい、ゲッターを介して直接ivarにアクセスするのは良いことです。
例:Cocoaの通常のデザインパターンの1つ(特に電話ではリソースが非常に限られている場合)は、遅延読み込みと呼ばれます。
要約すると、必要になるまでリソースをロードしないということです。
理想的には、要求されているリソースがロードされているかどうかを確認し、ロードされていない場合はロードするコードをゲッターに配置します。 ivarに直接アクセスすると、nilが返されます。代わりの方法は、親クラスが初期化されたときにすべてのivarを初期化することです。これにより、必要な場合とそうでない場合があるデータを保存するためのリソースを浪費する可能性があります。
これにより、 applicationDidReceiveMemoryWarning:
メソッドで再び取得される可能性のあるリソースを潜在的に配置し、必要に応じてオンデマンドで再び読み込まれるため、リソースが不足したときにそれらをダンプできます。
他のヒント
遅延読み込みゲッター:
- (UIImageView*) getImageView
{
if (!imageView)
{
imageView = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @"blah.png"]]; // just an example
}
return imageView;
}
imageViewの定義方法(コピー、割り当て、保持)によっては、実際の割り当てを変更する必要がありますが、これが遅延読み込みの意味です。
数理由をご利用 self.ivar
ゲッター構文の代わりに直接アクセスのインスタンス変数:
- Lazy-負荷特性、その他いて
- サブクラスはたいオーバーライドは物件として、スーパークラスを尊重することが
- ご利用の場合原子の特性を、正しい方法でアクセスには、ゲッター