Objective c .m文件中声明的成员变量在类的实例之间保持其值
我有Objective c .m文件中声明的成员变量在类的实例之间保持其值,objective-c,instance-variables,variable-declaration,Objective C,Instance Variables,Variable Declaration,我有MyClass的以下实现文件: BOOL myBool; @implementation MyClass // ... - (void) someMethod { myBool = YES; } @end @interface MyClass () @property (nonatomic) BOOL myBool; @end 在仅对MyClass的一个实例调用someMethod之后,似乎myBool对于MyClass的每个实例都将是YES。但是,如果我像这样定义myB
MyClass
的以下实现文件:
BOOL myBool;
@implementation MyClass
// ...
- (void) someMethod {
myBool = YES;
}
@end
@interface MyClass ()
@property (nonatomic) BOOL myBool;
@end
在仅对MyClass
的一个实例调用someMethod
之后,似乎myBool
对于MyClass
的每个实例都将是YES
。但是,如果我像这样定义myBool
,它对MyClass
的每个实例都有一个唯一的值:
BOOL myBool;
@implementation MyClass
// ...
- (void) someMethod {
myBool = YES;
}
@end
@interface MyClass ()
@property (nonatomic) BOOL myBool;
@end
上述两个“成员变量”语法之间的区别是什么?区别在于,在第一种情况下,它不是成员变量,而是全局变量,因此它自然会在类的多个实例之间保持其值 如果要在类实现文件中声明ivar,可以执行以下操作:
@implementation MyClass{
BOOL myBool;
}
...
区别在于,在第一种情况下,它不是成员变量,而是全局变量,因此它自然地在类的多个实例之间保持其值 如果要在类实现文件中声明ivar,可以执行以下操作:
@implementation MyClass{
BOOL myBool;
}
...
目标C没有“成员变量”。它有“实例变量”。非常接近同样的事情,但是使用精确的词汇表可以更容易地讨论这些事情。Objective-C没有“成员变量”。它有“实例变量”。非常接近于同一件事,但使用精确的词汇可以更容易地讨论这些事情。