是否可以在Objective-C中为匿名结构创建@property?

时间:2011-08-01 12:28:53

标签: objective-c

我的代码中有一个匿名结构,我想通过assign @property(无指针)来访问它。但是,因为这是一个匿名结构。这是我创建的可可代码(即使它是可可代码,它通常与objective-c相关。)

@interface ProfileViewController : UIViewController {

    struct {
       BOOL isDeviceOwner:1;

    } _statusFlags;
}

现在我想为_statusFlags创建一个属性:

@property (nonatomic, assign)

2 个答案:

答案 0 :(得分:2)

是的,您只需在内定义类型即可。

@property (nonatomic, assign) struct { ... } statusFlags;

然后当你综合它时,你可以@synthesize statusFlags = _statusFlags如果你真的喜欢下划线的ivars,但这会为你生成ivar。您无需明确定义它。

答案 1 :(得分:0)

你也可以通过使属性或方法获取指向被击中的指针来实现它,然后你只需要让编译器知道结构存在但不是结构中的内容即大小,例如

struct myPrivateStruct;
...
@property(assign,nonatomic)  struct myPrivateStruct * myStructProperty;
然后必须在您的实现文件中定义struct myPrivateStruct,并且属性手动实现该属性,例如

struct myPrivateStruct { int a, b; float c; };

- (void)setMyStructProperty:(struct myPrivateStruct *)aValue
{
    memcpy(&myIVar,aValue,sizeof(struct myPrivateStruct));
}

这与Objective-C类的接口文件中的@class类似。