加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iphone – 找到了名为’tag’的多个方法

发布时间:2020-12-14 19:35:27 所属栏目:百科 来源:网络整理
导读:为什么我在下面的代码中收到此警告: - (IBAction)shareThisActionSheet:(id)sender{ int row = [sender tag]; //warning is here! Multiple methods named 'tag' found ... 解决方法 描述 问题是编译器在当前转换单元中看到多个名为tag的方法,并且这些声明
为什么我在下面的代码中收到此警告:

- (IBAction)shareThisActionSheet:(id)sender
{
    int row = [sender tag]; //warning is here! Multiple methods named 'tag' found
    ...

解决方法

描述

问题是编译器在当前转换单元中看到多个名为tag的方法,并且这些声明具有不同的返回类型.一个可能是 – [UIView标签],它返回一个NSInteger.但它也可以看到标签的另一个声明:

@interface MONDate
- (NSString *)tag;
@end

然后编译器看到一个歧义 – 发送者是UIView吗?还是MONDate?

编译器警告您必须猜测发件人的类型是什么.这真的要求未定义的行为.

解析度

如果您知道参数的类型,请指定它:

- (IBAction)shareThisActionSheet:(id)sender
{
 UIView * senderView = sender;
 int row = [senderView tag];
 ...

否则,使用诸如isKindOfClass:condition之类的东西来确定在传递变量之前声明变量的类型.正如其他答案所示,你也可以进行类型转换.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读