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