5

consigo muchas advertencias de este tipo:'__strong' solo se aplica a object-c object o block pointer types; Escribe aquí es XXX" advertencia

'__strong' sólo se aplica a objetos Objective-C o bloquear los tipos de puntero; escriba aquí es ...

las advertencias están apuntando a las cabeceras marco NSNotification por ejemplo, NSURL, etc .. NSIndexset

¿qué son y cómo puedo repararlo

nota 1:.? i utilizar ARC

nota 2: la aplicación parece funcionar

editar 1: las advertencias parecen provenir de mi archivo pch. que es:

// 
// Prefix header for all source files of the 'myapp' target in the 'myapp' project 
// 

#import <Availability.h> 

#ifndef __IPHONE_5_0 
    #warning "This project uses features only available in iOS SDK 5.0 and later." 
#endif 

#ifdef __OBJC__ 
    #import <UIKit/UIKit.h> 
    #import <Foundation/Foundation.h> 
#endif 

editar 2: ejemplo de advertencia: de advertencia en NSString.h punto a:

/* Methods to convert NSString to a NULL-terminated cString using the specified encoding.  Note, these are the "new" cString methods, and are not deprecated like the older cString  methods which do not take encoding arguments. 
*/ 
- (__strong const char *)cStringUsingEncoding:(NSStringEncoding)encoding; //"Autoreleased"; NULL return if encoding conversion not possible; for performance reasons, lifetime of this should not be considered longer than the lifetime of the receiving string (if the receiver string is freed, this might go invalid then, before the end of the autorelease scope) 
+1

... pero no nos muestran el código que hace que la advertencia? –

+0

es un montón de código, y como he dicho, la advertencia no se trata de ningún código que haya escrito. – amit

+2

A menudo las advertencias están "emparejadas": una en su código, una en el encabezado para que sea más fácil encontrar el tipo coincidente. Muéstranos la línea de tu código que activa la advertencia. –

Respuesta

3

Parece que lo he resuelto. por alguna razón tuve una carpeta "Framework" con encabezados en mi carpeta local del proyecto. quitar esa carpeta y las advertencias se han ido. No sé cómo y por qué se creó esa carpeta. (No lo creé).

+0

Gracias tuve este problema. Aparentemente cuando arrastré marcos de otro proyecto a mi nuevo proyecto, creó carpetas de marcos. Eliminarlos del disco solucionó los problemas. –

+0

Esto funcionó para mí también, sin tener idea de por qué. – dassimon

0

Esta es una suposición: es su proyecto utilizando gcc? Si es así, intente cambiar a clang

+0

no, uso clang. – amit

+0

También estoy usando clang, la solución provista por @amit anteriormente funcionó para mí. – dassimon

7

La respuesta de Amir no funcionó, pero me llevó a una solución similar: asegúrate de que tampoco tienes una ruta de Frameworks en tus FRAMEWORK_SEARCH_PATHS en la configuración del proyecto o la configuración del objetivo. mina tenía una entrada que se veía así:

$ (DEVELOPER_DIR) /Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks

El síntoma era que si yo Comando hice clic en Foundation/Foundation.h en mi prefix.ch y luego clic con el botón derecho en la página-> Mostrar en Finder, estaba en iPhoneOS.plataforma. Pero hacer lo mismo con Availability.h me llevó a iPhoneSimulator.platform.

Así que tener algunos archivos, incluyendo desde cada plataforma, parece haber causado las __strong advertencias y también algunos errores de enlace donde decía arquitectura faltante i386, por lo que perdí la capacidad de ejecutar dentro de iOS Simulator.

Este error me llevó a 2 días resolver porque esa ruta había estado en mi configuración de destino durante meses, pero no estaba causando problemas. Algo sobre ir a Xcode 6 lo reveló, pero no de inmediato, simplemente ocurrió espontáneamente a principios de esta semana cuando estaba actualizando el SDK de Google AdMob y tal vez activó una reconstrucción del caché.

Lo más insidioso fue que al intentar compilar copias de seguridad de mi proyecto también fallaron con el mismo error.

Deje que se hunda por un momento e imagine la sensación de inminente fatalidad.

Comencé a sospechar fallas de hardware o un virus en ese momento, pero afortunadamente ..

El error estaba en el nivel Xcode, no en el nivel del proyecto. Lo que me lleva a pensar que tiene algo que ver con SHARED_PRECOMPS_DIR, CACHE_ROOT o posiblemente/var/folders, pero para entonces me había actualizado a Yosemite por pura desesperación y no podía diferenciar mi disco duro de mi copia de seguridad de Time Machine, que tenía Mavericks. En retrospectiva, ahí es donde lo arruiné. Eso significaba que tenía que probar una docena de otras posibles soluciones que involucraban PCH y otras memorias caché, ninguna de las cuales funcionaba. Tampoco eliminar directorios de datos derivados del proyecto en:

~/Library/desarrollador/Xcode/DerivedData

(que me había hecho sobre la base de this answer)

Ver también:

Can't Build in Xcode 6 - ARC Issues in Apple Frameworks

y:

Build Error - missing required architecture i386 in file

Específicamente:

Sean Roehnelt's answer

Cuestiones relacionadas