XCode 4.5 警告父/子类的类别之间的方法名称冲突

2024-03-12

我正在开发一个最初使用 XCode 4.0 构建的项目,然后迁移到使用 XCode 4.2。现在我已经测试了迁移到 XCode 4.5,并且收到了大量如下警告......

instance method 'values' in category from <pathToTheFile>/HistoryObject+extras.o conflicts with same method from another category

这些警告从未出现在以前版本的 XCode 中,并且代码也没有更改。

该项目的部署目标设置为 iOS 4.3。

因此,我们从以前的开发人员那里得到了一堆 DAO 类型类,我相信它们是从 CoreData 自动生成的,然后每个类都有一个类别,可以扩展它以实现某些方法。我举个例子...

我们有一个名为 LisaObject 的基类,它继承自 NSManagedObject,并且它有一个名为 LisaObject+extras 的类别。在 LisaObject+extras 中,有一个名为“values”的方法,它返回一个 NSMutableDictionary。

然后我们有一个名为 HistoryObject 的类,它继承自 LisaObject。 HistoryObject 还有一个名为 HistroyObject+extras 的类别。该类别还有一个名为“values”的方法。在HistoryObject+extrasvalues方法中,它调用[supervalues],然后检查一些条件并在字典中设置一些基类方法中未设置的附加值。

然后我们有一个名为LessonStatusObject 的类,它继承自HistoryObject,它也有一个名为LessonStatusObject+extras 的类别,其中有一个名为values 的方法。此值方法还调用 [super value],然后对返回的字典执行一些额外的工作。

对于这些“值”方法中的每一个,我们都会在编译时收到一条警告,如上所示,其中显示类别有一个名称冲突的方法。

我对此有几个问题。

首先,这种实现是否会导致任何合理的问题,或者这些警告通常是良性的?我试图思考这种实现如何在运行时导致歧义,但我不知道这是如何发生的。

其次,我应该做些什么来修复这些警告(我的意思不是让它们停止出现;我的意思是解决原因)?我们还有其他方法可以解决这个问题吗?

另外,为什么 XCode 4.2 不会对此发出警告,但 XCode 4.5 会发出警告?

我对类别有什么误解吗?我的意思是,如果“values”方法实际上是每个类实现的一部分,那么按照我们的方式重写它们不会有问题,但编译器似乎只是在抱怨,因为这些是类别。这有什么不安全的地方吗?

非常感谢任何建议。

EDIT:只是为了提供更多信息...当我们使用 XCode 4.2 时,该项目将编译器设置为 Apple LLVM Compiler 3.0。现在,当我在 XCode 4.5 中打开该项目时,它的编译器设置为 Apple LLVM Compiler 4.1。


我也遇到了同样烦人的问题,结果发现我不小心在我的 VC 代码之一中包含了该类别的 .m 文件而不是 .h 文件。将其更正为 .h 文件消除了链接器警告。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XCode 4.5 警告父/子类的类别之间的方法名称冲突 的相关文章

随机推荐

  • 如何在 Swift 中迭代对象数组?

    我有物体 var person1 Person person1 name Joe person1 lastName Doe person1 age 21 var person2 Person person2 name Julia perso
  • 像文字处理器一样格式化文本的 iPhone 应用程序

    很抱歉提出这样的一般性问题 但我想知道是否 以及如何 可以编写一个 iPhone 应用程序 在不同页面上格式化 txt 文件 就像 Microsoft Word 在布局模式下打开一个新文档时所做的那样 并且粘贴一个txt文件 换句话说 我不
  • 如何重新加载当前页面?

    我有一个用于编辑用户的页面 里面有一些子组件 每个子组件都可以更改其父组件或对其父组件产生一些影响 因此 我没有向父级发出更改并更新某些字段 而是使用 重新加载 当前页面 private route ActivatedRoute reloa
  • android:minHeight 在 web 视图中不起作用

    我有以下 xml 文件
  • 使用 loadData 在 UIWebView 中显示 PDF

    我正在尝试显示本地存储在 UIWebView 中的 PDF 这就是我目前尝试执行此操作的方式 if NSFileManager defaultManager fileExistsAtPath self url LOG ERROR Could
  • 如何返回 JsonResult [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在编写这个 AJAX 方法时遇到问题 我想返回一个JsonResult 似乎是合乎逻辑的事情 我能找到的所有例子都可以使用Jso
  • 在Python中访问第n维[重复]

    这个问题在这里已经有答案了 我想要轻松读取多维 numpy 数组的某些部分 对于任何数组 访问第一维都很容易 b index 另一方面 访问第六维度是 困难的 尤其是阅读 b index the next person to read th
  • 角度 HTTP POST 请求

    我在 Angular2 和 Spring MVC 中构建一个应用程序 当我尝试向我的服务器发出 POST 请求时 我没有收到任何成功或失败的迹象 但请求没有发生 因为我看不到新的数据 当我从邮递员那里发出请求时 请求成功 我可以看到新数据
  • 什么时候应该使用 MySQLi 而不是 MySQL?

    有人可以帮我解释一下使用 MySQLi 而不是 MySQL 的优点和缺点吗 是否存在不应该使用 MySQLi 的情况 为了使用 MySQLi 我是否需要以不同的方式配置我的服务器 例如 我是否需要升级 Apache 或 PHP 才能支持 M
  • 如何创建带有百分比计数器的 jQuery 预加载器?

    我编写了从一本 jQuery 初学者书中学到的代码 它非常适合作为页面的预加载器 但我如何为其创建百分比 计数器呢 基于加载了多少正文内容 目前我只有一个动画 GIF 但我想要一些更高级的东西 Lets preload window loa
  • 使用转换器和提供程序而不是属性映射时如何让 ModelMapper.validate() 成功?

    有类似的东西 Getter Setter public static class Entity private int hash private LocalDateTime createdTime and Getter Setter pub
  • 调用 oncontextmenu 时 Firefox 浏览器的事件未定义

    我在右键单击页面中的按钮时显示上下文菜单 用于显示上下文菜单的代码是 window addEventListener contextmenu function e e preventDefault false 当我右键单击按钮时 调用的上下
  • 解决 git merge octopus 上的冲突

    章鱼合并是指合并2个以上的头 用户应该如何使用普通的三向合并工具比较文件 3 个文件被传递到合并工具 BASE LOCAL REMOTE 3 个头需要多少个以及什么组合 在这种情况下 您不应该使用章鱼合并 八达通合并仅应在不存在合并冲突或冲
  • setInterval 使用 Electron 一小时后停止

    希望有人能在这里指出我正确的方向 我的电子应用程序需要每 10 分钟左右执行一次 API 调用 目前 我在渲染器进程中使用 setInterval 循环来执行此操作 该循环每 10 分钟触发一次 它通常工作得很好 几个小时后似乎就停止了 我
  • Android Studio 在创建新活动时“发生 IDE 错误”

    更新见底部 由于 Android Studio 将自身更新到 v3 0 我无法创建新的 Activity 我收到此错误报告对话框 显示 2 个错误 我尝试了不同的项目 尝试清理项目 重新同步 gradle 重新启动计算机 卸载 重新安装 A
  • strdup():对警告感到困惑(“隐式声明”、“使指针...无需强制转换”、内存泄漏)

    当我编译下面的一小段代码 其中我们定义一个字符串 然后使用 strdup 来制作副本 时 我收到 3 个警告 来自 GCC 的 2 个编译器警告和来自 valgrind 的 1 个运行时警告 错误 我怀疑内存泄漏错误 由 valgrind
  • x86-SSE 中四个压缩单精度浮点到无符号双字的转换

    有没有办法将四个打包单精度浮点值转换为具有 SSE 扩展的 x86 中的四个双字 最接近的指令是CVTPS2PI 但它不能在两个 xmm 寄存器上执行 而是应该给出为CVTPS2PI MM XMM M64 如果我想要类似的东西怎么办
  • R metaMDS 排序距离

    我一直在对不同采样点的丰富物种数据集进行一些排序 我在用metaMDS 素食主义者可以做到这一点 通过此功能 您可以 直接输入群落数据 行中的站点和列中的物种 并指定您希望使用的距离类型 即 jaccard brays curtis euc
  • Linux 上的 OpenCL,集成英特尔图形芯片

    我想用OpenCL在 Debian 8 上 我读到在本页 http streamcomputing eu blog 2011 12 29 opencl hardware support Linux 上不支持 Intel 的 GPU 这篇文章
  • XCode 4.5 警告父/子类的类别之间的方法名称冲突

    我正在开发一个最初使用 XCode 4 0 构建的项目 然后迁移到使用 XCode 4 2 现在我已经测试了迁移到 XCode 4 5 并且收到了大量如下警告 instance method values in category from