如何创建仅在objective-c中的一个类中使用的数据类型?

时间:2012-07-18 16:45:44

标签: objective-c ios nsmutablearray

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

基本上我需要一个专门的NSMutableArray,它可以做三件事:

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

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

3 个答案:

答案 0 :(得分:4)

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

假设你的类是MyClass,改进的数组是MyClass.m中的MyArray

@interface MyArray
{


}
@end

@implementation MyArray

@end


@implementation MyClass

@end

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

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

答案 1 :(得分: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文件中创建类别,然后导入。

答案 2 :(得分:1)

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