2011-11-23 60 views
4

我開發一個iPhone 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,以便查找該數組。

目前尚不清楚,但如果您確實要覆蓋setter,則參數必須爲NSMutableArray *,因爲這是您的屬性的類型。否則,如果您只是採取其他方法,請將其重命名以避免碰撞。 setShapeMatchedType:(ShapeType)t可能是一個不錯的選擇。