gpt4 book ai didi

iphone - 在内部类中引用 iVar 的问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:41 25 4
gpt4 key购买 nike

我有一个名为 MyClass 的类,它有一个名为 MyInnerClass 的小嵌套内部类。实现文件如下所示(还包含嵌套内部类的 ivar):

@class MyInnerClass;

@interface MyClass
{
MyInnerClass *myInnerClassIvar;
}
@property(nonatomic, retain) MyInnerClass *myInnerClassIvar;

@end

然后在实现文件中,我同时实现了MyClassMyInnerClass。看起来像下面这样:

@interface MyInnerClass
{
iVar *x;
}

@property(nonatomic, retain) iVar *x;
@end

@implementation MyInnerClass
@synthesize x;
...
@end

@implementation MyClass
@synthesize myInnerClassIvar;
...
@end

我现在正在为 MyClass 创建一个子类,并在其中尝试进行这样的调用:

self.myInnerClassIvar.x

我收到以下消息:

Property x cannot be found in in forward class object MyInnerClass *

我是不是忘记了什么?之前没有实现内部类,看不出为什么这不起作用。

更新:我将 MyInnerClass 的接口(interface)移动到 MyClass 的 .h 并且一切正常。这是一个好的解决方案吗?

最佳答案

我相信 Objective-C 在您尝试实现的意义上没有内部类。参见 SO .但是关于你的问题......

在 MyClass.h 中没有提到 MyInnerClass 的 iVars - 它是一个前向定义,即 @class MyInnerClass 因此 MySubClass 没有 x 的引用点。

如果您定义了两个类 MyClass 和 MyInnerClass(考虑到...,命名它可能是一件坏事)- 将它们放在两个单独的 .h 文件和两个单独的 .m 文件中(即正常情况下)。在 MyClass 中创建一个 MyInnerClass 类型的@property。然后在 MySubClass 中,您需要导入 MyClass 和 MyInnerClass。

关于iphone - 在内部类中引用 iVar 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9940570/

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