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...
  • zyq527758142
  • zyq527758142
  • 2014年10月14日 11:23
  • 2049

iOS method only defined for abstract class

创建了一个NSMutableArray的子类,结果提示 method only defined for abstract class.  Define -[MyMutableArray ...
  • xxq_2011
  • xxq_2011
  • 2014年03月26日 15:22
  • 923

[NSArray count]: method only defined for abstract class

[NSArray count]: method only defined for abstract class. Define -[IngredientsMutableArray count] ...
  • liheqiang123
  • liheqiang123
  • 2016年02月03日 16:23
  • 358

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

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

NSMutableArray 和 arrayWithCapacity 区别 NSMutableArray -init vs. +arrayWithCapacity:

http://stackoverflow.com/questions/1730706/nsmutablearray-init-vs-arraywithcapacity ...
  • ssyyjj88
  • ssyyjj88
  • 2016年05月13日 11:08
  • 609

OC实战: 抽象类的实现

这里, 假设你已经明白了 * oc 的继承. * oc 的多态.其实 oc 里面的方法都是虚方法. * oc 的协议 protocol. -------------------------------...
  • AndroidBluetooth
  • AndroidBluetooth
  • 2015年09月04日 17:01
  • 4928

iOS 21种设计模式之抽象工厂(Abstract Factory)

原创Blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmode=list 我的stackoverflow感谢感谢《Pro Objective-C ...
  • Hello_Hwc
  • Hello_Hwc
  • 2015年12月07日 10:13
  • 2174

iOS method only defined for abstract class

创建了一个NSMutableArray的子类,结果提示 method only defined for abstract class.  Define -[MyMutableArray coun...
  • yuanya
  • yuanya
  • 2013年12月03日 10:05
  • 3014

程序员面试中遇到问题

面试时候经常会问的一些问题(不断补充中) 面试必备基础题目(虽然不一定常用, 仅用于面试, 面试就是把人搞的都不会然后砍价, 当然您可以讲我可以查资料完成, 但是面试的时候就是没道理的, 起码我是经...
  • szu030606
  • szu030606
  • 2012年01月23日 13:53
  • 2406

1、IOS编译报之:streamStatus only defined for abstract class

今天发现了AFNetwroking的一个bug, 一年之前做的一个项目好好的,一年之后再次跑起来发现某个模块的提交功能莫名奇妙的崩溃了。程序员第一直觉就是检查代码,看了几遍代码确实没错,这就TMD郁闷...
  • u010545480
  • u010545480
  • 2015年03月21日 15:24
  • 851
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS method only defined for abstract class
举报原因:
原因补充:

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