gpt4 book ai didi

objective-c - 同一类的不同实例之间共享属性

转载 作者:行者123 更新时间:2023-12-03 17:45:07 25 4
gpt4 key购买 nike

在 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 函数中使用单例,但我不知道是否有一种简单的方法。

谢谢, 教育

最佳答案

类变量(在许多其他 OOP 语言中称为static)实际上在 Objective-C 中有点麻烦。您必须在类的模块 (.m) 文件中声明一个静态全局变量并引用该变量。您应该添加类级别的 getter/setter 来封装对静态全局变量的访问。如果在返回之前未初始化对象,则 getter 可以分配/初始化一个对象并将其放入变量中。

如果静态变量保存一个实例(例如示例中的 NSString 实例),您需要确保它不会被分配/初始化多次。如果您使用的是 OS X 10.6 或更高版本,请查看 dispatch_once 以保证单次初始化。

关于objective-c - 同一类的不同实例之间共享属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2390453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com