2013-02-15 93 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