首先我要说的是,我对整个结构和联合的事情还很陌生。在发布此内容之前我已经做了功课,并诚实地试图获得合法的澄清。如果这是错误的方法,请告诉我。首先,我尝试创建一个联合,因为我正在组合不同的数据类型。我唯一真正的问题/问题是点运算符与 ->。我可以使用
->
但不是
.
我只是好奇为什么?我在堆栈上阅读了一堆使用“.”显示示例或“答案”的帖子,但在现实世界中没有运气。我玩过“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的美妙之处,我可以用一种语言的价格来学习两种语言!如果不算open-gl的话。
我想问,是否有人可以发布一个有效的代码示例,然后我可以找出我做错了什么,或者彻底解释我做错了什么以及我错过的一些基本概念。从那里我可以弄清楚如何编写我自己的工作代码。我不需要两者,也不期望得到帮助,但想学习,这样我就可以解决自己的问题,而不仅仅是修补有缺陷的代码而不了解它是如何工作或为什么工作的。