4

我是 Objective-C 的新手,并且正在查看许多示例来了解它。我遇到了这段代码:

@interface ImagePickerHelper : NSObject <UIImagePickerControllerDelegate, UIPopoverControllerDelegate, UINavigationControllerDelegate>
  //Blah Blah
@end

@interface ImagePickerHelper ()
  //Blah Blah
@end

在谷歌搜索时,我知道他们在接口名称之后指定了超类和委托(顺便说一下,我知道 zilch)。

但是为什么接口在这里声明了两次呢?

4

2 回答 2

3

不,它没有被声明两次,它是一个 Class 接口(一个匿名类别),它被创建用于保存您希望在您的类中保持私有的方法,用于您不希望其他类看到或看到的方法与。。。相互作用 ..

人们经常用一个名称(通常是“private”)来声明一个标准类别来保存私有方法,但是 使用匿名类别而不是命名类别的主要优点是,如果您不实现在匿名中声明的方法,编译器会报错类别。

我注意到它是从 XCode 4.3 开始默认创建的。

将方法放入此扩展类中就像在 Java 或 C++ 中声明私有方法...

于 2012-06-03T22:02:22.873 回答
2

您看到的第二个“@interface”(可能在 .m 文件中)是一个类扩展,可能意味着私有方法(好吧,私有的意思是编译器将生成“可能不响应”警告)。

于 2012-06-03T21:57:18.060 回答