2012-01-13 14 views
0

Objc-Cが新しく、変数には@property@synthesizeを使用することを学んでいます。 [self var]またはself.varでアクセスする必要がありますか?これは、コードで私の質問を示していますObjective-C @propertyと@ベストプラクティスを合成する

@property (nonatomic, strong) UILabel *lbl; 
... 
@synthesize lbl = _lbl; 

-(void) doStuff 
{ 
    // How should I acces label? 
    _lbl.text = @"A"; 
    [self lbl].text = @"B"; 
    self.lbl.text = @"C"; 
} 
+0

[スタイル:ドット表記とObjective-C 2.0のメッセージ表記]可能な複製(http://stackoverflow.com/questions/1249392/style-dot-notation-vs-message-notation-in-objective- c-2-0) – Caleb

答えて

0

UILabel * l = [self lbl]; // == UILablel *l = self.lbl; 
[self setLbl:l];   // == self.lbl = l; 

は、しかし、違いはここにあなたのサンプル中に存在しています:

_lbl.text = @"A"; 

あなたがアクセスしているために最後の1つがうまくいかないあなたの@propertyを直接バイパスしているiVarは、@propertyと宣言しておくと意味がないことがよくあります。あなたのIVARのプロパティを変更している、あなたの場合は
、あなたがこれを行うならばそこには害はありませんが、:

_lbl = [[[UILabel alloc] initWithFrame:aRect] autorelease]; 

あなたはバイパス「をセッターを持っているでしょうので、あなたに大きな問題を引き起こします" A strongセッターはそのオブジェクトを保持していましたが、今は誰にも保持されません。離れてしまい、ポインタが悪くなり、アプリケーションがクラッシュする可能性があります。

+0

簡潔で簡潔な方法でそれを説明してくれてありがとう:) –

関連する問題