iOS id类型的方法调用

简介: 来自论坛的一个问题:[在线]一个obj-c语法的问题。 直接看一个例子@interface TestCounter : NSObject- (TestCounter *)coun...

来自论坛的一个问题:[在线]一个obj-c语法的问题
直接看一个例子

@interface TestCounter : NSObject

- (TestCounter *)count;

@end

int main(int argc,char *argv[])
{
    @autoreleasepool{
        [(id)[TestCounter new] count];
    }
    return 0;
}

上面这个例子省略了@implementation部分,如果运行起来会看到multiple methods named 'count' found with mismatched result, parameter type or attributes.错误。

这是为什么呢?我取得了一个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就没事了。

目录
相关文章
|
7月前
|
Web App开发 iOS开发 开发者
ios证书类型及其作用说明
ios证书类型及其作用说明
53 0
|
7月前
|
存储 物联网 数据安全/隐私保护
iOS开发证书、bundle ID、App ID、描述文件、p12文件,及企业证书打包发布详述
iOS开发证书、bundle ID、App ID、描述文件、p12文件,及企业证书打包发布详述
|
8月前
|
程序员 开发工具 iOS开发
iOS 获取手机的型号,系统版本,软件名称,软件版本,手机类型(型号)
iOS 获取手机的型号,系统版本,软件名称,软件版本,手机类型(型号)
83 0
|
8月前
|
Android开发 iOS开发
判断手机端获取哪种类型的手机系统-安卓-ios
判断手机端获取哪种类型的手机系统-安卓-ios
|
12月前
|
存储 物联网 编译器
iOS开发证书、bundle ID、App ID、描述文件、p12文件,及企业证书打包发布详述
此操作手册用于提供客户进行企业发布299美金的账户发布非AppStore的app程序的CSR证书,distribution证书以及p12证书导出用。
|
存储 物联网 编译器
iOS开发证书、bundle ID、App ID、描述文件、p12文件,及企业证书打包发布详述
iOS开发证书、bundle ID、App ID、描述文件、p12文件,及企业证书打包发布详述
iOS开发证书、bundle ID、App ID、描述文件、p12文件,及企业证书打包发布详述
|
存储 Web App开发 JSON
iOS小技能:设备ID除了使用_idfa、_idfv 还可使用其他替代方案(Keychain 存储)
设备信息的获取:除了使用_idfa、_idfv, 还使用sysct 获取cpu信息。
272 0
iOS小技能:设备ID除了使用_idfa、_idfv 还可使用其他替代方案(Keychain 存储)
|
iOS开发
IOS检测版本更新(***为app id)
IOS检测版本更新(***为app id)
53 0
|
文字识别 开发工具 iOS开发
iOS小技能: OCR 之身份证识别 (正反面) 【 应用场景:物流类型app进行实名认证】
1、功能:可自动快速读出中国二代身份证上的信息(姓名、性别、民族、住址、身份证号码)并截取到身份证图像 2、应用场景:信用卡网申、商户进件、实名认证流程为了用户体验提供扫一扫证件识别身份证号码功能。
603 0
iOS小技能: OCR 之身份证识别 (正反面) 【 应用场景:物流类型app进行实名认证】
|
数据安全/隐私保护 Android开发 iOS开发
免费苹果账号(apple id)申请ios证书p12真机调试
免费苹果账号(apple id)申请ios证书p12真机调试