我的代码中有一个匿名结构,我想通过assign @property(无指针)来访问它。但是,因为这是一个匿名结构。这是我创建的可可代码(即使它是可可代码,它通常与objective-c相关。)
@interface ProfileViewController : UIViewController {
struct {
BOOL isDeviceOwner:1;
} _statusFlags;
}
现在我想为_statusFlags创建一个属性:
@property (nonatomic, assign)
答案 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类似。