首先,我要说我对结构体和联合体还比较陌生。在发布这篇文章之前,我已经做了功课,并且真诚地想要得到合法的澄清。如果这样做是错误的,请告诉我。首先,我尝试创建一个联合体,因为我正在组合不同的数据类型。我唯一真正的问题/问题是点运算符与->运算符的区别。我可以使用点运算符获得我想要的结果。
->
但不包括
.
我很好奇为什么要这样做?我在 Stack 上阅读了许多帖子,展示了使用“。”的示例或“答案”,但在现实世界中没有运气。我已经尝试过类似于“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
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并将其作为struct,同样的事情也会发生。不幸的是,我先学习了Objective-C,而且在慢慢学习严格的C语言过程中。所以我对C的理解有点薄弱,但这就是Obc的优美之处,我可以用同样的精力学习两种语言!如果不算OpenGL的话。
我想问一下,是否有人可以发布一个可工作的代码示例,然后我就可以找出我做错了什么,或者彻底解释一下我的问题和我错过的一些基本概念。从那里开始,我就可以找出如何编写自己的有效代码了。我不需要两者都有,也不期望得到援助,但我希望能够学习,以便能够解决自己的问题,而不只是在不了解其原因或原理的情况下修补有错误的代码。