我正在尝试创建一个基于NSMutableArray
的类,这些类基于虚构的股票市场资产填充了对象,如果我只是创建一个NSMutableArray
,它就有效。
NSMutableArray *portfolio = [NSMutableArray arrayWithObjects: ABC, DEF, GHI, JKL, nil];
根据Portfolio
创建名为NSMutableArray
的课程,并将NSMutableArray
的引用更改为Portfolio
:
Portfolio *portfolio = [Portfolio arrayWithObjects: ABC, DEF, GHI, JKL, nil];
XCode抛出一个线程1:信号SIGABRT错误。我一直无法思考导致错误的原因,因为Portfolio
类是NSMutableArray
的子类,如果除了创建新类之外什么都不做,那么它基本上是NSMutableArray
名称,没有其他方法或属性。
非常感谢任何帮助。
答案 0 :(得分:0)
NSMutableArray
不是一个可以继承的真正的类。它实际上是类集群的一部分,它使它有效地抽象化。您可以创建类集群类的子类,但您需要做几件事。将类创建为NSMutableArray
实例的包装器并显式提供适当的方法要容易得多。
答案 1 :(得分:0)
首先,我是其他人到目前为止所说的内容:继承NSMutableArray
并不是最好的方法。更好的方法是创建一个名为Portfolio
的对象,它是NSObject
的子类,然后在其中包含一个NSMutableArray
的实例变量。这称为创建复合对象。
话虽如此,如果你必须继承NSMutableArray
,你必须覆盖五种原始方法。这些是:
insertObject:atIndex:
removeObjectAtIndex:
addObject:
removeLastObject
replaceObjectAtIndex:withObject:
但是,需要重复一遍:这不是最好的方法。