4
예제 튜토리얼 스 니펫을 디버깅하고 설정자 재정의에 대해 혼란스러워합니다.Objective-C에서 setter를 호출하지 않도록 재정의
I 선언하고 여기에 표시된 재정의 그래서 내 가정
//
// PolygonShape.h
//
@interface PolygonShape : NSObject
{
int numberOfSides;
}
@property int numberOfSides;
//
// PolygonShape.m
//
@synthesize numberOfSides;
// custom setter.
- (void) setnumberOfSides:(int) i
{
if ((i > minimumNumberOfSides) && (i <= maximumNumberOfSides))
numberOfSides = i;
else
NSLog (@"Number of sides outside limits:\n You entered %d, limits are min.:%d, max.:%d",
i, minimumNumberOfSides+1, maximumNumberOfSides);
}
//
// main.m
//
poly = [[PolygonShape alloc] init];
poly.numberOfSides = 2;
[poly setnumberOfSides:2];
여기에 생각 나는 "
재정이는"
numberOfSides
의 합성 세터, 다음
poly.numberOfSides = 2;
내
(void) setnumberOfSides:(int) i
기능이라는 것 때문에 것입니다. 하지만 함수가 호출되는 유일한 방법은 명시 적으로 수행 할 때입니다.
[poly setnumberOfSides:2];
나는 이해하지 못합니다. 그 때를 무시하는 것이 무엇입니까?
아니면 내가 뭘 잘못하고있는 것입니까? ;)
+1 메서드 이름은 대소 문자를 구분합니다. –
내 변수가 'numberOfSides'인데도 ("숫자"가 작은 'n') 합성 기능 *이 자체 목적으로 자본 'N'으로 변경됩니다. 좋은. :/ –
아니요, @synthesize는 모든 코코아에서 일관된 낙타 껍질 규칙과 정확하게 일치하도록 사례를 변경합니다. 'setnumberOfSides :'는 결코 의미가 없습니다. – bbum