1

我想我已经看到了这一点,但我找不到关于它的文档,因为我认为我不知道正确的术语。我需要知道如何编写一个只在另一个类中使用的特殊类,因此可以完全写在另一个类的实现中。

基本上我需要一个专门的 NSMutableArray 可以做三件额外的事情:

  • 一旦被要求删除最近的项目
  • 将该项目存储在 last_most_recent_item 变量中
  • 跟踪是否添加了新项目
  • 如果尚未添加新项目,并且请求数组中的最后一个对象,则返回 last_most_recent_item 而不是实际的最后一个项目

但是,事情就是这样,我只需要在一个类中使用这个 SpecialNSArray。所以我想把声明和实现放在那个类中,而不是放在单独的文件中。我相信我已经看到这样做了。有谁知道这叫什么,我该怎么做?

4

3 回答 3

4

为此,只需将新类添加到要使用它的类的实现文件中。我认为这被称为私人课程。

假设您的班级是 MyClass,改进后的数组是 MyClass.m 中的 MyArray

@interface MyArray
{


}
@end

@implementation MyArray

@end


@implementation MyClass

@end

在这种情况下,MyArray 上的额外方法只有在从 MyClass 调用时才能被编译器看到。

请注意,Objective C 中没有什么是私有的,MyArray 上的这些方法可以在运行时从程序中的任何位置调用,只是这些方法会在编译时引发警告。

于 2012-07-18T16:56:51.260 回答
3

我认为您正在描述 NSMutableArray 上的一个类别。

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html

YourClass.m
@interface NSMutableArray : (YourClassExtentions)
@end

@implementation NSMutableArray : (YourClassExtentions)
@end

@implementation YourClass()
@end

您也可以在单独的 m 和 h 文件中创建类别,然后导入。

于 2012-07-18T16:48:40.827 回答
1

您可以简单地将类@interface MyInternalClass ...@implementation MyInternalClass ...代码段放入“公共”类的 .m 文件中。在 .h 中添加@class MyInternalClass;一行,以便您可以在“公共”类的实例变量中声明指向该类的指针。

于 2012-07-18T17:21:30.620 回答