2013-02-15 45 views
-3

如何在Objective-c中的類@implementation中創建實例變量?如何在類實現中定義實例變量?

+1

退房http://stackoverflow.com/questions/6785765/instance-variables-declared-in-objc-implementation-file – 2013-02-15 11:53:58

+0

原因,我問這是因爲這樣,我想聲明的內部變量@實現似乎產生某種全局變量......所以這個問題並不那麼愚蠢,所以請不要投票,與C#,Java和其他OOP語言相比,它有語法小故障。 – Dusan 2013-02-15 11:56:19

回答

4

把它們放在花括號裏,就像這樣:

@implementation { 
    id anIvar; 
} 
+0

當變量聲明未放置在大括號中時究竟發生了什麼?我能得到什麼樣的變量? – Dusan 2013-02-15 12:09:51

+0

@Dusan我認爲這在技術上是一個全局變量,它只在實現塊或者它定義的文件中可見。我認爲它的行爲與靜態變量類似。 – 2013-02-15 12:12:10

+0

是的,它似乎確實是這樣的。謝謝! – Dusan 2013-02-15 12:17:26

-2

定義一個實例變量是這樣的:

NSMyClass *_nameOfObject; 

你應該做你的@interface不是你@implementation

+0

你可以把它們放在你的實現塊中,看看可能的重複。 – 2013-02-15 12:02:11

2

你不 - 實例變量是內@interface塊定義。

如果你希望它只是你的.m文件中可見您可以將@implementation

@interface MyClass() { 
    NSInteger myInteger; 
    NSString *myString; 
} 
@end 
+0

好吧,我幾乎總是把它們放在'@implementation {}'這樣的日子裏,就像Carl Veazey的回答一樣。 – 2013-02-15 11:56:33

+0

您可以將它們放在花括號中的實現塊中,查看可能的重複內容。 – 2013-02-15 12:02:35

+0

確實如此,但如果您想添加「私人」屬性,則會遇到問題。 。 。個人而言,我更喜歡分離:) – deanWombourne 2013-02-18 13:04:35

2

您可以實現文件做這個類擴展名前加上這一句:

@interface SomeClass() { 
    NSInteger _aVariable; 
} 

@end 

或者更好地定義屬性:

@interface SomeClass() 

@property(nonatomic, assign) NSInteger aProperty; 

@end 
+0

不知道你可以在類擴展中做到這一點,整齊。 – 2013-02-15 11:57:40