gpt4 book ai didi

objective-c - 声明结构类型的 Objective-C 属性和初始化

转载 作者:行者123 更新时间:2023-11-30 17:04:48 25 4
gpt4 key购买 nike

我有一个单例类,用于维护应用程序状态。由于多个不同的领域都使用它来获取信息,因此我决定尝试通过以下方式封装我的数据。例如,一个类 Signal 从我的单例中检查 startend 的值,我们将其称为 global >。我没有在此类上定义两个名为 signal_Startsignal_End 的属性,而是希望将它们埋入名为 Signal_Status_t 的结构中。所以我有以下结构声明:

typedef struct SignalStatus {
int start;
int end;
} Signal_Status_t;

后跟 Objective-C 属性声明:

@property (nonatomic) SampleStatus_t signal_Status;

但是,当我去初始化它们时......

self.signal_Status.start = 0;
self.signal_Status.end = 0;

我收到编译错误:

Expression is not assignable.

我想要做的是能够在此类中初始化它们,并且能够在其他地方可靠地设置它们(鉴于结构是“值类型”,我担心它们无法正常工作),例如:[全局共享实例].signal_Status.start = 100;

希望有人可以帮助我澄清这些有关结构行为的问题,或者在可能的情况下提出更好的解决方案,使我能够编写类似于 global.someDomain.someDomainParameter 的代码。

最佳答案

要么

self->_signal_Status.start = 0

_signal_Status.start = 0

(即直接访问实例变量),或

Signal_Status_t myStatus = self.signal_Status;
myStatus.start = 0;
self.signal_Status = myStatus;

如果两者都设置,

Signal_Status_t initialStatus;
initialStatus.start = 0;
initialStatus.end = 0;
self.signal_Status = initialStatus;

访问属性(使用 self.* )是方法调用; C 结构必须完整设置,因为 setter 方法参数是整个结构。您可以结合 getter 方法。例如,尝试设置 UIView(或 NSView)框架的各个值时,您会发现相同的问题。

关于objective-c - 声明结构类型的 Objective-C 属性和初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35570836/

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