"与 "."-6ren"> "与 "."-首先让我说我对整个结构和 union 的事情还很陌生。在发布这篇文章之前,我已经做了功课,并诚实地试图获得合法的澄清。如果这是错误的方法,请告诉我。首先,我试图创建一个 union ,因为我正在组合不-6ren">
gpt4 book ai didi

Objective-C union "->"与 "."

转载 作者:太空狗 更新时间:2023-10-30 03:58:21 25 4
gpt4 key购买 nike

首先让我说我对整个结构和 union 的事情还很陌生。在发布这篇文章之前,我已经做了功课,并诚实地试图获得合法的澄清。如果这是错误的方法,请告诉我。首先,我试图创建一个 union ,因为我正在组合不同的数据类型。我唯一真正的问题/问题是点运算符与 ->。我可以使用

->

但不是

.

我只是好奇为什么? iv 阅读堆栈上的一堆帖子,这些帖子使用“。”显示示例或“答案”,但在现实世界中没有运气。我玩过“typedef”,比如...

typedef union _myUnion
{
int intValue;
bool boolValue;
}myUnion;

但这并没有什么不同。如果有人解释我做错了什么,将不胜感激。这是我正在尝试做的快速示例。为了简单起见,我将只发布一些结构/union 语法,不会添加任何子类代码,因为这不是问题。

例子.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

所以现在在我的其他类(class)中这有效...

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。

我会问,是否有人可以发布一个有效的代码示例,然后我可以找出我做错了什么,或者彻底解释我做错了什么以及我错过的一些基本概念。从那里我可以弄清楚如何编写我自己的工作代码。我不需要两者,也不指望有人施舍,但我想学习,这样我就可以解决自己的问题,而不仅仅是在不了解其工作原理或原因的情况下修补有缺陷的代码。

最佳答案

a->b 运算符是 (*a).b 的简写 - 它类似于使用 . 但首先进行取消引用.当 a 是一个指针时是合适的。

由于在您的原始示例中 someProperty 是一个指向 union 的指针,因此您需要先取消引用该指针。这意味着您需要使用:

(*newObject.someProperty).intValue // confusing!

或者

newObject.someProperty->intValue // much better

访问它。

当然,一旦您将 someProperty 更改为 union 而不是指向 union 的指针,您就可以改用 .。所以:

  • a->b:访问指针上的结构/union 成员
  • a.b:访问原始结构/union 上的结构/union 成员

关于 Objective-C union "->"与 ".",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10325505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com