Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c .m文件中声明的成员变量在类的实例之间保持其值_Objective C_Instance Variables_Variable Declaration - Fatal编程技术网

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没有“成员变量”。它有“实例变量”。非常接近于同一件事,但使用精确的词汇可以更容易地讨论这些事情。