iphone - 在内部类中引用 iVar 时出现问题

标签 iphone objective-c ios cocoa-touch inner-classes

我有一个名为 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 的 iVar - 它是一个前向定义,即 @class MyInnerClass 因此 MySubClass 没有 x 的引用点。

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

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

相关文章:

iphone - NSInteger 是一个 32 位整数吗

iphone - ios-coredata : what's the difference between in-memory tracking and full persistent tracking?

objective-c - 为什么我的字符串不会显示在 UIAlertView 中

ios - 检索数据后如何实例化?

ios - 使用 XCTest UI 测试确定应用程序是否已退出

android - 波长照相机

iphone - NSXMLParser:如何显示从 webservice 获得的响应?

javascript - 使用 MEGA API,高级概述

ios - Apple-Mach-O 链接器错误 UIKit iOS 8

ios - CollectionView 大小不一,没有任何库