2012-01-27 1 views
3

안녕하세요 여기 멍청한 질문이 있습니다.UIIButton 또는 UILabel 속성에 = _variable을 할당해야합니까?

나는 반복적으로 항상 때 = _propertyName 변수를 지정하도록 지시했다 공부하는 동안

@ 합성 - 보내고

@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

이름 지정 규칙입니다. 당신이 항상 지역 변수로부터 ivar를 말할 수 있기 때문에 당신의 ivars를 균일 한 방식으로 접두사를 붙이면 코드가 더 읽기 쉽습니다. – Costique

답변

2

선호 사항입니다. 그러나 범위와 관련해서는 명심해야 할 차이가 있습니다. 이 같은 신디사이저,

@synthesize myTime = _myTime; 

쓰기 그리고 당신은 예를 들어, -(void)setTime:(id)myTime;를 들어, 클래스의 인스턴스 메소드의 범위 내에있는 경우 예를 들어, 호출 사이에 차이가있다

self.myTime = newTime; 

그리고,

myTime = newTime; 

그것은 첫 번째 개체의 인스턴스 변수를 변경하는 것이, 두 번째는 myTime 지역을 재 할당하는 것이 분명해진다 변수를 메서드 setTime:에 대한 인수로 전달했습니다. 이는 일반적으로 원하지 않는 것입니다.그러나이 같은 인스턴스 변수를 합성하는 경우

@syntehsize myTime; 

이 조금 더 혼란이 실제로 지역 변수를 재 할당,이 과제로

myTime = newTime; 

일어날 것이며, 무엇을하지 않을 것입니다 너는 의도했다. 따라서 변수를 명명 할 때 규칙을 고수하고 혼동을 피하는 것이 좋습니다. 그래서 밑줄을 지정하고 인스턴스 변수를 항상 self에 연결하여 설정하는 것이 내 개인적인 선호입니다.

+0

멋진 설명을 해주셔서 감사합니다. 그래서 당신은 = synthesize-es에 대해 _variable을합니까? UIButtons, UILabels 및 기타 IBOutlets에 대해서도? – TrekOnTV2017

+0

예, 모든 인스턴스 변수에 적용됩니다. – john

+0

나는 똑같이 할 것이다. 다시 한번 감사드립니다. – TrekOnTV2017

0

감사하지 @ 합성 - 보내고 선호 단지 문제 @property

을 . 어떤 사람들은 @synthesize myTimer;을 선호하며 어떤 사람들은 다른 사람들을 선호합니다 ...

이제 내 질문입니다. IB 속성에 대해서도이 작업을 수행해야합니까?

어떤 방식 으로든 메소드를 합성하거나 정의해야합니다. 그 이상으로, 단지 하나의 대회를 선택하고 그것에 충실하십시오!

1

규칙의 문제 일뿐입니다. 하나의 규칙을 고수하려고하면, 이것은 변수 이름에 해당 할뿐만 아니라 프로그램하는 모든 것에 해당됩니다.

+0

참조. 그래서 나는 객체가 객체 또는 _ 객체라는 이름의 변수에 저장 될지 여부만을 결정하고 있습니다. 따라서 두 변수 (이름 제외)에는 사실적인 차이가 없습니다. – TrekOnTV2017

+0

이 단추에 액세스하는 방법의 이름 만 변경합니다. –

+0

내가 봅니다. 따라서 코딩 스타일에 관한 것입니다. 이제 이해가된다. – TrekOnTV2017

0

제 생각에는 "_var"는 getter/setter와 실제 관련 변수를 더 잘 구분하는 데 사용됩니다.

@Synthesize myTimer = _myTimer; 

가 사용되는 경우

. setter/getter를 사용할 때마다 또는 변수에 직접 액세스 할 때마다 매번 알림이 표시됩니다.

@synthesize가 사용되는 경우,

self.myTimer = anotherTimer; 

[self setMyTimer(anotherTimer)]; 

한편

_myTimer = anotherTimer; 

단순히 변수에 할당되는 것과 동일 할 것이다;

예, 관습에 따라 달라 지지만 setter/getter를 호출하여 변수에 직접 액세스하려면 "_var"를 사용해야합니다. 그렇지 않아,별로 중요하지 않습니다.

관련 문제