Можно ли создать @property для анонимной структуры в Objective-C? - PullRequest
1 голос
/ 01 августа 2011

У меня есть анонимная структура в моем коде, к которой я хотел бы получить доступ через assign @property (без указателя). Тем не менее, так как это анонимная структура. Вот код какао, который я создал (даже если это код какао, он имеет отношение к цели-c в целом)

@interface ProfileViewController : UIViewController {

    struct {
       BOOL isDeviceOwner:1;

    } _statusFlags;
}

Теперь я хотел бы создать свойство для _statusFlags:

@property (nonatomic, assign)

Ответы [ 2 ]

2 голосов
/ 01 августа 2011

Да, вы просто определяете его в строке, где вы определяете тип.

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

Тогда, когда вы синтезируете его, вы можете сделать @synthesize statusFlags = _statusFlags, если вам действительно нравятся подчеркнутые ивары, но это сгенерирует для вас ивар.Вам не нужно определять это явно.

0 голосов
/ 01 августа 2011

Вы также можете сделать это, указав свойству или методу указатель на зачеркнутый объект. Вам нужно лишь сообщить компилятору, что структура существует, а не то, что в структуре, то есть размер, например,

struct myPrivateStruct;
...
@property(assign,nonatomic)  struct myPrivateStruct * myStructProperty;

Затем необходимо определить структуру myPrivateStruct в файле реализации, а свойство реализует свойство вручную, например

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

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

это похоже на @ @ class в интерфейсных файлах класса Objective-C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...