是否可以在objective-c中共享该类的所有实例中的一个类的一个参数:
@interface Class1 : NSObject {
NSString* shared; /** shared among instance (this is not, but defined somehow) **/
NSString* non_shared; /** other parameters non shared **/
}
在程序中,Class1的每个实例都有自己的non_shared变量(像往常一样),但是所有实例都访问相同的共享变量(当一个实例发生更改时,所有人都可以看到它)。
一种可能性是将变量隐藏为属性并在setter / getter函数中使用单例,但我不知道是否有一种简单的方法。
谢谢, 埃杜
答案 0 :(得分:2)
类变量(在许多其他OOP语言中称为static
)实际上在Objective-C中有点痛苦。您必须在类的模块(.m)文件中声明一个静态全局变量并引用该变量。您应该添加类级别的getter / setter来封装对静态全局变量的访问。你的getter可以分配/初始化一个对象,如果它在未归一化之前放在变量中,那么它就会返回它。
如果静态变量包含一个实例(例如示例中的NSString
实例),则需要确保它不会多次进行alloc / initialized。如果您使用的是OS X 10.6或更高版本,请查看dispatch_once
以确保单个初始化。