声明struct类型和初始化的Objective-C属性

时间:2016-02-23 07:00:20

标签: objective-c c struct properties

我有一个用于维护app状态的单例类。由于几个不同的领域利用它来获取信息,我决定尝试以下列方式封装我的数据。例如,一个班级-Wno-unused-variable会检查我的单身人士Signalstart的值,让我们称之为end。我没有在这个名为globalsignal_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; 的代码。

1 个答案:

答案 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)框架的单个值时会遇到同样的问题。