iOS,在Objective C中使用struct,结构值不能从超级视图分配

Mrw*_*lfy 6 struct objective-c ios

我试图使用结构来存储三个值作为一个单位可以这么说.我收到一个错误:" Expression not assignable"当我尝试从对象的超级视图为结构值赋值时.

有谁知道这是为什么?

在我班的.h文件中,我已经定义了struct和一个属性

@interface MyClass : UIView

{
    struct customStruct {
        float a;
        float b;
        float c;
    };

}

@property (assign, nonatomic) struct customStruct myStruct;
Run Code Online (Sandbox Code Playgroud)

从超级视图我尝试分配一个值,我得到一个错误:" Expression not assignable"

object.myStruct.a = someValue;
Run Code Online (Sandbox Code Playgroud)

Eng*_*epe 20

试试这个:

struct customStruct aStruct = object.myStruct;
aStruct.a = someValue;
object.myStruct = aStruct
Run Code Online (Sandbox Code Playgroud)

这是完全相同的情况,因为无法做到这一点:

view.frame.size.width = aWidthValue;
Run Code Online (Sandbox Code Playgroud)

BTW在类接口中声明一个struct似乎是一个非常糟糕的风格.这更清洁:

typedef struct { 
    float a;
    float b;
    float c;
} customStruct;

@interface MyClass : UIView

@property (assign, nonatomic) customStruct myStruct;
Run Code Online (Sandbox Code Playgroud)

  • 这不完全正确,因为他想要更新他的结构成员而不是从头开始设置它 (2认同)

gio*_*shc 6

这是因为object.myStruct返回结构成员的副本,并且没有必要更改a该副本的成员.

你应该让整个struct更改成员,然后再次设置struct成员(使用get/set合成方法)