gpt4 book ai didi

objective-c - 获取 Objective-c 属性的地址(这是一个 C 结构)

转载 作者:太空狗 更新时间:2023-10-30 03:42:09 26 4
gpt4 key购买 nike

我有一个包含 C 风格结构的 Objective-C 类。我需要调用一个 C 函数,将指针传递给该对象成员(也称为属性)。对于我的生活,我无法弄清楚如何获取此 C 结构的地址。使用传统的 & 运算符获取地址时,出现 LValue 编译器错误。

typedef struct _myStruct
{
int aNumber;
}MyStruct, *pMyStruct;

@interface MyClass : NSObject {
MyStruct mystruct;
}
@property (readwrite) MyStruct myStruct;
@end

以下代码会导致编译错误:

MyClass* myClass = [[MyClass alloc] init];

MyStruct* p = &(myClass.myStruct);

如何获取指向 myClass 对象的 myStruct 成员的指针?

最佳答案

考虑到 Objective-C 应用程序通常必须使用 C/C++ API,这些 API 接受指向结构和类似类型的指针,因此通常有很好的理由去做原始帖子要求的事情,但在 Cocoa 应用程序中,您将通常希望将此类数据存储在 Objective-C 类中,用于数据管理、数组和字典中的集合等。

虽然这个问题已经有一段时间了,但我没有看到明确的答案,那就是:你可以有一个方法来返回支持你的属性(property)的数据的地址,但在那个方法中不要使用“self” "否则它会通过访问器但仍然无法工作。

- (const MyStruct*) getMyStructPtr
{
return &mystruct;
}

请注意,我使用的是 OP 中声明的属性,但没有将其引用为 self.mystruct,这会产生编译器错误(因为这会调用合成的 getter 方法)。

关于objective-c - 获取 Objective-c 属性的地址(这是一个 C 结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1102018/

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