2012-06-28 27 views
0

可能重複:
iOS: must every iVar really be property?屬性定義在h.file

我真的很希望如果有人可以給我爲什麼某些屬性在接口聲明的定義和一些爲解釋@財產的。

@interface PlacesParser : NSObject 
{ 
    NSMutableArray *arrPlaces; 

    TBXML *tbxml; 
} 

@property(nonatomic,retain) NSMutableArray *arrPlaces; 

-(void)loadRecords:(NSString *)records; 
-(void)traverseElement:(TBXMLElement *)element; 

@end 

在我的例子,我們得到了 「arrPlaces」 爲@財產

,並在界面內 「arrPlaces」。

回答

3

接口中的東西實際上並不是一個屬性,它只是一個普通的舊實例變量。 @property聲明是什麼使它成爲一個屬性(給你設置者和獲得者)。你曾經需要兩個,但你不再。如果您希望您的字段是生成方法的屬性,則可以省略最初的字段聲明。

+0

感謝Dima ...那麼爲什麼以及何時我會在@interface {...}中定義屬性? – mogio

+1

@mogio:你不能在'@interface {}'塊中定義屬性。只有實例變量。屬性位於大括號之後,並且不實際定義存儲。 – Chuck

+0

再次,那些不是屬性,他們只是ivars。如果你不想生成訪問器/增變器(例如,如果它只是被設置/使用一次,所以你不想要開銷),你會聲明一個ivar而不使它成爲一個屬性。你可能只想製作大部分屬性。 [更多信息](http://stackoverflow.com/questions/719788/property-vs-instance-variable)。 – Dima