2012-01-27 15 views
3

こんにちは、ここに質問があります。UIIButtonまたはUILabelプロパティに= _variableを割り当てる必要がありますか?

私は繰り返し、常にとき= _propertyName変数を指定するように指示された私の研究の中に

@合成-INGの

@property (nonatomic, strong) NSTimer *myTimer; 

のために例えば

ので@propertyを、私はどうなる

@synthesize myTimer = _myTimer; 

今私の質問です。これはIBのプロパティでも行わなければなりませんか?

@synthesize myLabel; 
@synthesize myButton; 

のか: な

@property (nonatomic, strong) IBOutlet UILabel *myLabel; 
@property (nonatomic, strong) IBOutlet UIButton *myButton; 

として私はここで行うか、これはNSArrayの、またはNSStringのか、のようなもののために有用である理由

@synthesize myLabel= _myLabel; 
@synthesize myButton = _myButton; 

私が見ることができます、実際にいくつかの値を格納しているBOOLが、このロジックがUIButtons、UILabelsなどに適用されるかどうかはわかりません。私は繰り返し、常にとき= _propertyName変数を指定するように指示された私の研究の中に任意のポインタのために(意図なしプット)

+0

命名規則の問題です。あなたのivarsを一様に接頭辞付けすると、コードを読みやすくなります。なぜなら、あなたはいつもローカル変数からivarを伝えることができるからです。 – Costique

答えて

2

これは優先事項です。しかし、スコープに留意する必要があります。たとえば、あなたが、このようなあなたのシンセサイザーを書く

@synthesize myTime = _myTime; 

そして、あなたはクラスのインスタンスメソッドの範囲内で、例えば、-(void)setTime:(id)myTime;場合は、呼び出しの間に差がある、

self.myTime = newTime; 

そして、

myTime = newTime; 

それは最初は、あなたのオブジェクトのインスタンス変数を変更していること、第二はmyTime地元を再割り当てすることが明らかになり、変数setTime:に引数として渡されます。これは、通常はやりたくないものです。あなたはこのようなあなたのインスタンス変数を合成した場合は、

@syntehsize myTime; 

それは

myTime = newTime; 

これは、実際にローカル変数を再割り当てし、そして何ではないかもしれないが、もう少し混乱この割り当てで何が起こるかでありますあなたは意図した。あなたの変数に名前を付ける際には、慣習に固執し、混乱を避けることをお勧めします。そのため、アンダースコアを割り当て、インスタンス変数を常にselfにアタッチして設定するのが私の個人的な好みです。

+0

クール、大きな説明のおかげで。あなたは@ synthesisize-esに対して= _variableをしますか? UIButtons、UILabels、その他のIBOutletsの場合でも – TrekOnTV2017

+0

はい、すべてのインスタンス変数です。 – john

+0

私は同じことをやります。再度、感謝します。 – TrekOnTV2017

0

をありがとうなかっ@合成-INGの好みの問題だ@property

を。いくつかの人々は@synthesize myTimer;を好む、いくつかの人々は他の好みを持っている...

今私の質問です。これはIBのプロパティでも行わなければなりませんか?

何らかの形でメソッドを合成または定義する必要があります。それを超えて、ただ一つの大会を選び、それに固執してください!

1

それは単なる慣習の問題です。 1つの規則を守ろうとします。これは変数名に限らず、あなたがプログラムしているすべてのものに当てはまります。

+0

を参照してください。だから私は、オブジェクトがオブジェクトに格納されるのか、_objectという名前の変数に格納されるのかを決定するだけです。だから、名前を除いて2つの変数に事実上の違いはありませんか? – TrekOnTV2017

+0

このボタンにアクセスする方法の名前のみを変更します。 –

+0

私を参照してください。だからそれは本当にコーディングスタイルだけです。わかった。 – TrekOnTV2017

0

私の意見では、 "_var"はゲッター/セッターとその実際の関連する変数をよりよく区別するのに役立ちます。

@Synthesize myTimer = _myTimer; 

が採用されている場合

。セッター/ゲッターを使用しているか、変数に直接アクセスしているかに関係なく、毎回通知されます。

@synthesizeが使用される場合、次いで

self.myTimer = anotherTimer; 

[self setMyTimer(anotherTimer)]; 

一方

_myTimer = anotherTimer; 

は、単に変数に代入されるのと同じであろう。

はい、規約上の問題ですが、セッター/ゲッターの呼び出しと変数への直接アクセスを区別したい場合は、 "_var"を使用する必要があります。それは本当に問題ではありません。

関連する問題