2012-01-10 56 views
0

在以下示例中,是否需要行NSObject *_propertyName;是@arnt所需的屬性@synthesize propertyName = _propertyName;

.H

@interface ClassName 
{ 
    NSObject *_propertyName; 
} 

@property (nonatomic, retain) NSObject *propertyName; 

@end 

.M

@implementation ClassName 

@synthesize propertyName = _propertyName; 

@end 

我覺得,如果我排除NSObject *_propertyName;但保持@synthesize propertyName = _propertyName;一切正常。下面是我在談論的一個例子:

.H

@interface ClassName 

@property (nonatomic, retain) NSObject *propertyName; 

@end 

.M

@implementation ClassName 

@synthesize propertyName = _propertyName; 

@end 

我測試過,看到該屬性仍然有效。我幾乎總是看到包含行NSObject *_propertyName;的代碼。有什麼我在這裏失蹤?

+1

請在發佈前進行搜索。已經有超過一半的問題涉及這個問題。這裏有一個這樣的:http://stackoverflow.com/questions/8330257/is-it-necessary-to-declare-ivars-in-interface-to-match-properties – 2012-01-10 18:21:51

+1

這是一個搜索,將變得更多:http:/ /stackoverflow.com/search?q=%5Bobjc%5D+declare+ivars+for+properties其中的一些內容位於右側的相關側欄中,並且在您起草問題時會出現。 – 2012-01-10 18:23:21

+1

發佈此答案之前,我做了大量搜索。沒有其他問題出現。抱歉轉發,但我真的試圖找到答案。 – Nate 2012-01-11 06:02:07

回答

3

你不會錯過任何東西。從較新的運行時開始(較新的iOS Simulator,x86_64和ARM),不再需要手動聲明一個ivar。在此之前,在i386和PPC上,你必須手動聲明你的ivars。