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

栏目: Objective-C · 发布时间: 6年前

内容简介:翻译自:https://stackoverflow.com/questions/13388440/xcode-4-5-warns-about-method-name-conflicts-between-categories-for-parent-child

我正在开发一个最初在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的类别.在LisaObject附加组件中,有一个名为“values”的方法返回NSMutableDictionary.

然后我们有一个名为HistoryObject的类,它继承自LisaObject.还有一个名为HistroyObject extras的HistoryObject类别.此类别还有一个名为“值”的方法.在HistoryObject extras values方法中,它调用[超级值],然后检查某些条件并在字典中设置一些未在基类方法中设置的其他值.

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

对于这些“值”方法中的每一个,我们在编译时得到一个警告,就像上面显示的那样,它表示Category有一个名称冲突的方法.

我有几个问题.

首先,这种实施是否会导致任何合法问题,或者这些警告通常是否良性?我试着想一想这个实现如何在运行时引起歧义,但我不知道这是怎么发生的.

第二,我应该做些什么来解决这些警告(我并不是说只是让它们停止出现;我的意思是修复原因)?我们应该采取其他方式吗?

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

我是否误解了类别?我的意思是,如果“values”方法实际上是每个类实现的一部分,那么以我们的方式覆盖它们就不会有问题,但编译器似乎只是因为这些是类别而抱怨.这有什么不安全的吗?

任何建议都非常感谢.

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

不要忽视警告.

Apple的“Objective-C编程”指南在“ Customizing Existing Classes ”部分中说:

If the name of a method declared in a category is the same as a method  in the original class, or a method in another category on the same  class (or even a superclass), the behavior is undefined as to which  method implementation is used at runtime.

如果它一直在为你工作,那就好运了.

翻译自:https://stackoverflow.com/questions/13388440/xcode-4-5-warns-about-method-name-conflicts-between-categories-for-parent-child


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

人本界面

人本界面

(美)拉斯基(Jef Raskin) / 史元春 / 机械工业出版社 / 2004-1-1 / 28.0

如果我们想克服目前人机界面上的固有缺陷,就很有必要理解本书的教义;若无此愿望,读读也无妨。交互设计的许多重要方面此书并没有包括在内,因为许多文献中都已经有详尽的阐述。本书的意图是补充现有的界面设计的方法或预测未来。  本书概述了人机界面设计领域的研究成果,详细论证了界面设计思想应以认知学为基础,并考虑人类的心智特点,在指出当前界面设计中弊端的同时,提出了新产品开发的思路。本书集计算机科学、人体工程......一起来看看 《人本界面》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具