iOS method only defined for abstract class

转载 2013年12月03日 10:05:43

创建了一个NSMutableArray的子类,结果提示

method only defined for abstract class.  Define -[MyMutableArray count]!'

在网上找到相关的答案如下:

The short, easy answer: Don't make a subclass of NSArray. It's better to make a category on NSArray or make an NSObject subclass that has an NSArray ivar that you talk to.

The long, technical answer: NSArray is a class cluster. This means that it isn't actually one class, but many classes operating under the NSArray abstract class interface that are each implemented in a different way (say, one implementation for small arrays, another for big arrays, etc.). To create a subclass of a class cluster, you have to implement all the primitive methods of the abstract class you are inheriting from, manage your own storage and basically reimplement all the stuff you were hoping to get for free by subclassing.

More simply, you could just create a category if you don't require additional ivars. If you want an object that behaves like an array with additional state, you can create a class that has an NSArray and use Objective-C message forwarding to forward everything except your custom behavior to that class.


相关文章推荐

关于继承NSDictionary之后出现 [NSArray count]: method only defined for abstract class的问题

1.问题描述 这次在建数据模型Model时,选择了继承NSDictionary而不是NSObject,于是问题就来了。 在从服务器对返回的数据进行解析后赋值时,就出现了NSDictionary s...

iOS method only defined for abstract class

创建了一个NSMutableArray的子类,结果提示 method only defined for abstract class.  Define -[MyMutableArray ...

[NSArray count]: method only defined for abstract class

[NSArray count]: method only defined for abstract class. Define -[IngredientsMutableArray count] ...

[NSArray count]: method only defined for abstract class. Define -[IngredientsMutableArray count]

类似这样的问题~ 出错原因: NSArray 和 NSDictionary 都是簇类,一般不建议写一个类去继承他们。 解决: 如果非要继承,一定要准确的重写这些基本的方法: insert...

linux shell获取路径的文件名及其目录名

完整的文件名最长可以到达4096个字符。 那么,怎么知道哪个是文件名?哪个是目录名?就是利用斜线(/)来分辨。 其实,获取文件名或者是目录名,一般的用途是在写程序时进行判断。  下面我们简单以几...
  • yff1030
  • yff1030
  • 2012年08月12日 21:47
  • 11967

用NSTask执行外部命令并获取输出结果的方法

本文介绍了如何通过NSTask在当前目录执行“ls -l -a -t”,并将结果保存在NSString中的基本方法。   NSTask *task; task = [[NSTask all...

CALL METHOD-Abstract class 和 public class的调用

ABAP程序中今天会用到CALL METHOD即调用类方法,类似CALL FUNCTION。 以SAP中的两个类为例:CL_GUI_CFW,CL_GUI_ALV_GRID。 调用格式如下: CALL ...

abstract class

  • 2013年11月10日 20:00
  • 4KB
  • 下载

深入理解abstract class和interface

  • 2008年09月02日 10:01
  • 45KB
  • 下载

java 接口(Interface)与 抽象类(abstract class)

在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。   抽象类往往用来表...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS method only defined for abstract class
举报原因:
原因补充:

(最多只允许输入30个字)