XCode 4.5 advierte sobre conflictos de nombres de methods entre categorías para classs padre / hijo

Estoy trabajando en un proyecto que originalmente fue construido en XCode 4.0, y luego migré a usar XCode 4.2. Ahora he probado migrar a XCode 4.5, y estoy recibiendo un montón de advertencias como debajo …

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

Estas advertencias nunca aparecieron en versiones anteriores de XCode, y el código no ha cambiado.

El proyecto se establece en iOS 4.3 para el objective de implementación.

Entonces, tenemos de un desarrollador anterior un grupo de classs de tipo DAO que creo que se generaron automáticamente desde CoreData, y luego cada una de estas classs tiene una categoría que lo extiende para implementar ciertos methods. Daré un ejemplo …

Tenemos una class base llamada LisaObject que henetworkinga de NSManagedObject, y tiene una categoría llamada LisaObject + extras. En los extras LisaObject +, hay un método llamado "valores" que devuelve un NSMutableDictionary.

Entonces tenemos una class llamada HistoryObject que henetworkinga de LisaObject. También hay una categoría para HistoryObject que se denomina HistroyObject + extras. Esta categoría también tiene un método denominado "valores". En el método de valores adicionales de HistoryObject +, llama a [supervalores], y luego comtesting algunas condiciones y establece algunos valores adicionales en el dictionary que no están establecidos en el método de class base.

Entonces tenemos una class llamada LessonStatusObject que henetworkinga de HistoryObject, y también tiene una categoría llamada LessonStatusObject + extras, que tiene un método denominado valores. Este método de valores también llama a [super valores] y luego realiza un trabajo adicional en el dictionary devuelto.

Para cada uno de estos methods de "valores", obtenemos una advertencia en el time de compilation como la que se muestra arriba donde dice que la Categoría tiene un método con un nombre en conflicto.

Tengo algunas preguntas sobre esto.

Primero, ¿podría esta implementación causar problemas legítimos, o son estas advertencias generalmente benignas? He intentado pensar cómo esta implementación podría causar una ambigüedad en el time de ejecución, pero no veo cómo podría suceder.

Segundo, ¿hay algo que deba hacer para corregir estas advertencias (y no me refiero solo a hacer que dejen de aparecer, quiero decir arreglar la causa)? ¿Hay alguna otra forma en que deberíamos estar haciendo esto?

Además, ¿por qué XCode 4.2 no advierte sobre esto, pero XCode 4.5 lo advierte?

¿Estoy malinterpretando algo sobre las categorías? Quiero decir, si el método de "valores" era realmente parte de la implementación de cada class, no sería un problema replacelos de la forma en que lo hacemos, pero el comstackdor parece quejarse simplemente porque son categorías. ¿Hay algo inseguro al respecto?

Cualquier consejo es muy apreciado.

EDIT: Solo para proporcionar más información … Cuando usábamos XCode 4.2, el proyecto tenía el comstackdor configurado en Apple LLVM Compiler 3.0. Ahora cuando abro el proyecto en XCode 4.5, tiene el comstackdor configurado en Apple LLVM Compiler 4.1.

No ignore la advertencia.

La guía "Progtwigción con Objective-C" de Apple, en la sección " Personalizar classs existentes ", dice:

Si el nombre de un método declarado en una categoría es el mismo que un método en la class original o un método en otra categoría en la misma class (o incluso una superclass), el comportamiento no está definido en cuanto a qué método de implementación se usa en time de ejecución

Si ha estado funcionando para ti, entonces es suerte.

Tuve el mismo problema molesto y resultó que accidentalmente había incluido el file .m de esa categoría en lugar del file .h en uno de los códigos de mi VC. Corregirlo al file .h eliminó las advertencias del linker.

Tuve este problema también, pero fue causado por algo diferente nuevamente. ¡Para mí fue que la categoría se había agregado dos veces al proyecto Xcode! No descubrí que ese era el caso hasta que fui a cambiar el nombre de uno de los methods y vi en la vista previa de refactorización que enumeraba el file de categoría dos veces.