【问题标题】:How to use NSArray Class? [closed]如何使用 NSArray 类? [关闭]
【发布时间】:2013-03-20 11:45:19
【问题描述】:

我想创建一个NSArray 类型的Objective-C Class,但我不知道如何初始化它或如何添加数据。

我做了以下事情:

1- 创建一个新文件

2-我选择了Objective-C Class

3-我选择了 Subclass of 类型的 NSArray

出现两个文件:

.h:

#import <Foundation/Foundation.h>

@interface ArrayClass : NSArray

@end

.m

#import "ArrayClass.h"

@implementation ArrayClass

@end

我的问题是:下一步是什么。

1- 在这个类中调用什么方法。

2-如何初始化数组。

3- 是-(id)init 够用了

编辑: 我的 ViewController 中有一个解析器,我需要用不同的 XML 链接初始化另一个解析器,这就是为什么我需要一个带有 NSArray 类型的新类

提前致谢。

【问题讨论】:

  • 你确定你想要一个真正的subclass NSArray 而不仅仅是一个instance
  • 你到底想达到什么目的?您将根据需要添加方法。您以初始化对象的正常方式初始化数组。实现 -(id)init 的唯一原因是如果你想覆盖它的行为(记住,-(id)init 是从父类继承的)。
  • 你想通过创建一个NSArray类来做什么?
  • 您是否考虑过实际阅读文档? (也许你应该研究一下“类”和“实例”之间的区别。)
  • 为什么要创建 nsarray 的子类?如果您想为 nsarray 添加更多功能,可以通过创建 nsarray 的类别或扩展来实现。

标签: ios objective-c cocoa-touch nsarray


【解决方案1】:

我将发布此内容,以便有人声明。

NSArray 是一个类簇,一个内部实现的包装器。它的内部细节会根据数组的内容和大小而变化,因此可以针对性能进行优化。因此,继承 NSArray(或 NSDictionary)并不是一个好主意。

我想您可以通过在其上添加类别来扩展该类,这是一种更好且更“可可”的添加功能的方式。 Apple 开发人员文档中有一些关于设计模式的指南,可以在这方面提供帮助。

也许重述这个问题,所以我们都很清楚,因为我们很困惑你是真的想继承它还是只创建一个。

【讨论】:

    【解决方案2】:

    如果您只是想使用NSArray,只需这样做:

    NSArray  *myArray = [NSArray arrayWithObjects:@"foo",@"bar",@"baz",nil];
    

    除非您想更改实际结构并扩展NSArray,否则无需执行您正在执行的操作。

    【讨论】:

    • 我的 ViewController 中有一个解析器,我需要用不同的 XML 链接初始化另一个解析器,这就是为什么我需要一个 NSArray 类型的新类
    • 嘿穆塔维。我很欣赏澄清。遗憾的是,它解释得不够清楚,我们无法帮助您:) 您说您的视图控制器中有一个解析器(我假设解析 XML),您需要创建另一个解析器来解析一些不同的 XML。您能否发布创建原始解析器的代码行?
    【解决方案3】:

    如果您真的想扩展NSArray,请查看this answer

    如果您不打算扩展 NSArray 的功能,您可能正在寻找创建 NSArray 的实例,这就像在需要数组的某个区域中转到 NSArray *arrayName = [[NSArray alloc] init] 一样简单,

    【讨论】:

    • 这是错误的。所有 NSArray 子类都必须实现 NSArray 类参考中指定的功能。
    • 哦,我明白了,我假设它就像任何其他对象一样。生病改变我的答案
    【解决方案4】:

    或者如果你想要一个数组,你可以动态地添加你想要的数据

    NSMutableArray *arr = [[NSMutableArray alloc] init];
    

    这一切都取决于你想要什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 2011-03-14
      • 2011-11-19
      相关资源
      最近更新 更多