id类型进行动态绑定时候出现的编译错误

代码如下:

main.m
图片说明
编译器显示:
Multiple methods named “add” found with mismatched result, parameter type or attributes
FloatNumber.h
图片说明
FloatNumber.m
图片说明
IntNumber.h
图片说明
IntNumber.m
图片说明

关闭ARC的话,编译器只会警告,不会报错
图片说明

如果把 addForL的返回值改为NSNumber *类型 编译正确 结果也正确
![图片说明
图片说明

有多个相同的方法名,如楼上所说修改了NSNumber,实质是改变了方法名,方法名不再冲突,故不会错误

最终调用的时候其实还是需要转换对应的类.不然还会提示.

所以建议不用这方式