私は構造体と共用体全体にかなり慣れていないと言って始めましょう。これを投稿する前に宿題をして、正直に正当な説明を得ようとしました. これが間違っている場合は、私に知らせてください。まず、異なるデータ型を組み合わせているため、ユニオンを作成しようとしています。私の唯一の本当の問題/質問は、ドット演算子と->です。を使用して作業したいものを取得できます
->
しかし、そうではありません
.
なぜなのか気になりますか?「。」を使用して例または「回答」を示すスタック上の一連の投稿を読みますが、現実の世界では運がありません。私は「typedef」のように遊んだ...
typedef union _myUnion
{
int intValue;
bool boolValue;
}myUnion;
しかし、それは違いを生むものではありません。誰かが私が間違っていることを説明してくれれば、それは大歓迎です。これが私がやろうとしていることの簡単なサンプルです。簡単にするために、いくつかの構造体/共用体の構文を投稿するだけで、サブクラス化コードは追加しません。これは問題ではないためです。
たとえば .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
たとえば .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 に変更して構造体にすると、同じことが起こります。残念ながら、私は最初にobjective-cに習熟し、徐々に厳密なcを習得しています。私の c の理解は少し弱いですが、それが obc の利点です。1 つの言語の価格で 2 つの言語を学べます。open-glをカウントしない場合。
誰かがコードの実際の例を投稿して、自分が何を間違えたのかを理解できるか、または何が間違っているのか、および見逃した基本的な概念のいくつかを徹底的に説明できるかどうかを尋ねます。そこから、自分の作業コードを書く方法を理解できます。私は両方を必要とせず、配布を期待していませんが、それがどのように、またはなぜ機能するかを理解せずにバグのあるコードにパッチを当てるだけでなく、自分の問題を解決できるように学びたいと思っています。