Objective C 属性变量和非属性变量的存储
Storage of Objective C property variables and non property variables
任何人都可以向我解释一下 objective c 中存储的变量的确切位置吗?
在.h文件中
@interface example: NSObject
{
NString *string; // where is this stored
int number; // where is this stored
}
@property (nonatomic,strong) NSURL* mURL; // where is this stored
@end
同样,
在 .m 文件中
# import "xyz.h"
NSString *constant = @"hello"; // where is this stored
@interface example()
{
NString *textg; // where is this stored
int numb; // where is this stored
}
@property (nonatomic,strong) NSURL* sURL; // where is this stored
@end
"string"、"textg"、"number" 和 "numb" 是 class 的实例变量。不同之处在于 "string" 和 "number" 有资格公开访问(通过 ref->number),而 "textg" 和 "numb" 是私有的(因为其他 classes 通常不会#import .m 文件)。
"mURL" 和 "sURL" 属性存储为实例变量“_mURL”和“_sURL”。同样,“_mURL”有资格公开访问(通过 ref->_mURL),而“_sURL”不是出于同样的原因。
并且,"constant"是一个普通的全局变量,存储在堆上。
你问:
where exactly the variables stored
要回答这个问题:constant
以外的所有变量以及属性使用的变量都存储为 class [=12] 的每个实例的内存分配的一部分=] 你创造的。每个实例都有自己的每个变量副本。例如。当你这样做时:
example *anExample = [example new];
您正在请求创建 example
的实例,并将对它的引用存储在 anExample
中。该实例包含您声明的所有实例变量和属性(并且它还包含其超classes 的任何实例变量和属性,在此仅NSObject
)。
您的另一个变量 constant
是在文件级别声明的。这些变量作为应用程序的一部分与编译后的代码一起存储在文件中。无论创建多少个 class 实例,都只有一个 constant
变量。方法 运行 代表任何实例都看到相同的 constant
变量。
HTH
任何人都可以向我解释一下 objective c 中存储的变量的确切位置吗?
在.h文件中
@interface example: NSObject
{
NString *string; // where is this stored
int number; // where is this stored
}
@property (nonatomic,strong) NSURL* mURL; // where is this stored
@end
同样,
在 .m 文件中
# import "xyz.h"
NSString *constant = @"hello"; // where is this stored
@interface example()
{
NString *textg; // where is this stored
int numb; // where is this stored
}
@property (nonatomic,strong) NSURL* sURL; // where is this stored
@end
"string"、"textg"、"number" 和 "numb" 是 class 的实例变量。不同之处在于 "string" 和 "number" 有资格公开访问(通过 ref->number),而 "textg" 和 "numb" 是私有的(因为其他 classes 通常不会#import .m 文件)。
"mURL" 和 "sURL" 属性存储为实例变量“_mURL”和“_sURL”。同样,“_mURL”有资格公开访问(通过 ref->_mURL),而“_sURL”不是出于同样的原因。
并且,"constant"是一个普通的全局变量,存储在堆上。
你问:
where exactly the variables stored
要回答这个问题:constant
以外的所有变量以及属性使用的变量都存储为 class [=12] 的每个实例的内存分配的一部分=] 你创造的。每个实例都有自己的每个变量副本。例如。当你这样做时:
example *anExample = [example new];
您正在请求创建 example
的实例,并将对它的引用存储在 anExample
中。该实例包含您声明的所有实例变量和属性(并且它还包含其超classes 的任何实例变量和属性,在此仅NSObject
)。
您的另一个变量 constant
是在文件级别声明的。这些变量作为应用程序的一部分与编译后的代码一起存储在文件中。无论创建多少个 class 实例,都只有一个 constant
变量。方法 运行 代表任何实例都看到相同的 constant
变量。
HTH