我有一个用于维护app状态的单例类。由于几个不同的领域利用它来获取信息,我决定尝试以下列方式封装我的数据。例如,一个班级-Wno-unused-variable
会检查我的单身人士Signal
和start
的值,让我们称之为end
。我没有在这个名为global
和signal_Start
的类上定义两个属性,而是希望将它们隐藏在一个名为signal_End
的结构中。所以我有以下结构声明:
Signal_Status_t
随后是Objective-C属性声明:
typedef struct SignalStatus {
int start;
int end;
} Signal_Status_t;
然而,当我去初始化它们时......
@property (nonatomic) SampleStatus_t signal_Status;
我收到编译错误:
表达式不可分配。
我想要做的是能够在这个类中初始化它们,并且能够在其他地方可靠地设置它们(假设结构是“值类型”我担心它们无法正常工作),例如:{ {1}}。
希望有人可以帮助我澄清有关结构行为的这些问题,或者建议一个更好的解决方案,如果可能的话,允许我编写类似于self.signal_Status.start = 0;
self.signal_Status.end = 0;
的代码。
答案 0 :(得分:0)
无论
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)框架的单个值时会遇到同样的问题。