позвольте мне начать с того, что я довольно новичок во всей структуре и союзе. я сделал свою домашнюю работу, прежде чем публиковать это и честно пытаюсь получить законное разъяснение. если это неправильный способ, пожалуйста, дайте мне знать. Во-первых, я пытаюсь создать объединение, потому что я объединяю разные типы данных. моя единственная реальная проблема/вопрос - это точечный оператор vs ->. я могу получить то, что я хочу работать, используяцель-c союз "->" против "."
->
но не
.
им просто любопытно, почему? iv прочитайте кучу сообщений в стеке, которые показывают примеры или «ответы», используя «.», но не повезло в реальном мире. я играл с «typedef», как ...
typedef union _myUnion
{
int intValue;
bool boolValue;
}myUnion;
но это не шов, чтобы изменить ситуацию. если кто-нибудь объяснит, что я делаю неправильно, это будет очень признательно. вот краткий пример того, что я пытаюсь сделать. для простоты я просто опубликую синтаксис struct/union и не добавлю какой-либо код подкласса, поскольку это не проблема.
example.h
#import "<Foundation/Foundation.h"
union myUnion
{
int intValue;
bool boolValue;
};
@interface MyClass : NSObject
{
union myUnion *someProperty;
}
@property (nonatomic, assign) union myUnion *someProperty;
-(void)doSomething;
@end
example.m
#import "MyClass.h"
@implementation MyClass
@synthesize someProperty = _someProperty;
- (id)init
{
//Some init method...
}
- (void)doSomething
{
NSLog(@"I Did Something...");
}
@end
так что теперь в моем другом классе это работает ...
MyClass *newObject = [MyClass alloc] init];
newObject.someProperty->intValue = 6;
, но это не ...
MyClass *newObject = [MyClass alloc] init];
newObject.someProperty.intValue = 6;
на данный момент я больше заинтересован в том, чтобы узнать, почему этот последний не работает? что интересно, если я сниму указатель в файле .h для свойства.
@interface MyClass : NSObject
{
union myUnion someProperty;
}
@property (nonatomic, assign) union myUnion someProperty;
"." работает вместо «->», но теперь его нельзя назначить.
как побочная заметка, если я изменю bool на int и сделаю это структурой, то же самое произойдет. к сожалению, я стал опытным в объективе-с первым, и я медленно подбираю строгую c как я иду. поэтому мое понимание c немного слабое, но это красота obc, я получаю возможность изучать два языка по цене одного! если вы не считаете open-gl.
Я бы спросил, может ли кто-нибудь опубликовать рабочий пример кода, и тогда я смогу выяснить, что я сделал не так, или объяснить, что это такое, я делаю неправильно и некоторые из основных понятий, которые я пропустил. оттуда я могу понять, как написать свой собственный рабочий код. я не нуждаюсь в обоим, и не ожидаю, что раздастся, но хотел бы узнать, поэтому я могу решить свои собственные проблемы, а не просто патч-глючный код, не понимая, как и почему он работает.
ответы, предоставленные Вами и тимофеевка удивительно заявил. Спасибо вам обоим. если бы я мог задать следующий вопрос. давайте создадим вездесущий класс «человек». что «человек» обладает свойством «волос». что волосы имеют «длину» и «цвет». поэтому, если бы я хотел установить person.hair.цвет = черный; & person.hair.length = long; была бы правильная дорога, или я должен смотреть на это по-другому? я думаю, я пытаюсь выяснить, как создать «вспомогательные свойства», затем установить и получить их. – DoS
@DoS для нетривиального поведения и данных, вы обычно просто используете класс objc, а не просто c struct или union. с опытом, вы сможете легко выбрать класс objc, c struct или другой подходящий дизайн. – justin
Еще раз спасибо за информацию. но к вашему моменту я просто пытаюсь изучить различные методологии для того, чтобы делать что-то. «расширять мои горизонты», так сказать. Я знаю, что могу сделать это с чистым классом o-c, но было любопытно, как еще это можно сделать. я думаю, я все еще немного запутался в вопросе или синтаксисе псевдо-«свойства». используя пример класса «человек», вы в основном говорите, что «волосы» будут просто подклассом класса «человек». «длина» и «цвет» будут тогда просто свойствами подкласса волос? Я правильно понимаю это? – DoS