2011-11-23 6 views
4

내가 아이폰 4 응용 프로그램을 개발 그리고 난 클래스에 문제가 :유형 'shapeMatched'접근의 유형과 일치하지 않습니다 '는 setShapeMatched'

@interface Pattern : NSObject { 

     int maxNumShapes; 
     NSMutableArray* shapes; 
     NSMutableArray* shapeMatched; 
     CGSize bounds; 
    } 
    @property (nonatomic, retain, readonly) NSMutableArray* shapes; 
    @property (nonatomic, retain, readonly) NSMutableArray* shapeMatched; 

    ... 
    - (void) setShapeMatched:(ShapeType)type; 

@end 

및 구현 :

- (void) setShapeMatched:(ShapeType)type { 
    int index = 0; 
    if (shapes != nil) 
    { 
     for(Object2D* obj in shapes) 
     { 
      if (obj.figure == type) 
      { 
       [shapeMatched replaceObjectAtIndex:index 
             withObject:[NSNumber numberWithBool:YES]]; 
       obj.withFillColor = YES; 
       break; 
      } 
      else 
       index++; 
     } 
    } 
} 

나는 다음과 같은 경고 얻을 :

Type of property 'shapeMatched' does not match type of accessor 'setShapeMatched:' 

가 어떻게이 경고를 해결할 수 있습니까?

답변

6

사용자 정의 setShapeMatched:의 이름을 다른 이름 (예 : setMyShapeMatched)으로 바꿔야합니다. setShapeMatched:은 이미 신고 된 속성의 설정자로 사용 중입니다.

+7

"sidyll"에 먼저 응답해야하므로 실제로이 검사를해야합니다. – MusiGenesis

14

- (void)setShapeMatched:(ShapeType)type 메서드는 아마도 shapeMatched 배열의 내용을 변경하기위한 것이지만 그 이름은 바로 그 배열에 대한 속성의 설정자를 덮어 씁니다.

확실하지 않지만 setter를 실제로 덮어 쓰려면 인수의 유형이 NSMutableArray *이어야합니다. 그렇지 않으면, 그냥 뭔가 다른 방법을 수행하는 경우 충돌을 피하기 위해 이름을 바꿉니다. setShapeMatchedType:(ShapeType)t이 좋은 옵션 일 수 있습니다.

관련 문제