解决方案 »
- 关于iPhone开发, 看完OC该干什么了?
- UIPickerView使用显示问题。
- java程序员想学iphone开发容易吗?
- 新手求助,一个关于xib的问题
- cocos2d如何删除本层
- udp接收数据显示中文乱码,大家帮帮忙,指导指导,谢谢
- 为什么[UIImagePickerController isSourceTypeAvailable的值为NO
- 我开发了一个叫“坑爹么么答”的游戏。有苹果机的多多支持
- objective-c程序设计第四版代码清单4-6用xcode码出来有问题
- 求大神给推荐一个做图表的第三方库,(折线,柱图,饼图)支持左右滑动的。。
- 请教下4和5的适配问题
- 新人来问个问题~~已崩溃球解救~
12312.123120
楼主没有问题的 你这里都没有用到B类,
我给你写一个简单的例子:@interface TestCounter : NSObject- (TestCounter *)count;@endint main(int argc,char *argv[])
{
@autoreleasepool{
// id obj = [[A alloc] init];
// [obj show];
// [obj mul:123.12];
[(id)[TestCounter new] count];
}
return 0;
}这个例子一样会报同样的错误,这是为什么呢?我取得了一个TestCounter的实例,但是我把它转为了id类型,然后用id类型调用了count方法,此时编译器会遍历所有的可见头的count方法,编译器当然会找到多个定义,因为count方法在NSArray,NSSet等等这些类上也有实现,而且我的TestCounter的count方法返回的是一个TestCounter对象,这和NSArray,NSSet等的count方法返回NSUInteger类型不一样,所以编译器会给你一个异常,注意看这个异常描述:
multiple methods named 'count' found with mismatched result, parameter type or attributes.
那为什么把NSArray转成id类型调用count方法不会有错呢?因为Foundation框架的所有count方法的返回值都是一个NSUInteger类型,编译器找到的签名自然都是一样的,那我们把TestCounter的count的返回值也改成NSUInteger呢?你可以试试。
在这版块待了这么久,很少见有人问OC运行时和编译时的问题
过早发现这些问题反而会影响自己的理解。
[dic objectForKey:@"size"] count]我代码中也出现这问题,这些是库方法,该怎么处理