premium medidas medicion icon features apple app iphone objective-c ios4

medicion - medidas ios 12 iphone 6



Programación iOS-símbolo duplicado_OBJC_IVAR (5)

clase de operador:

#import <Foundation/Foundation.h> @interface operator : NSObject { int number; } @property int number; @end @implementation operator - (id)init{ self = [super init]; if (self) { [self setNumber:0]; } return self; } @synthesize number; @end

main.m:

#import <UIKit/UIKit.h> #import "operator.m" int main(int argc, char *argv[]) { id operator1 = [[operator alloc] init]; id operator2 = [[operator alloc] init]; [operator1 setNumber:10]; [operator2 setNumber:20]; int answer = [operator1 number] + [operator2 number]; printf("The answer is %d",answer); NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; return retVal; }

Recibo un error -> ld: duplicate symbol _OBJC_IVAR_$_operator.number in /Volumes/Home/Desktop/testing/build/testing.build/Debug-iphonesimulator/testing.build/Objects-normal/i386/operator.o and /Volumes/Home/Desktop/testing/build/testing.build/Debug-iphonesimulator/testing.build/Objects-normal/i386/main.o

Esta es mi primera vez que programo en ObjC. ¿Estoy haciendo algo mal?

Intenté la solución "Limpiar todos los objetivos" que encontré en Google pero no ayudé.


Biblioteca estática involucrada

Agregué una clase que tenía exactamente el mismo nombre que una clase en la biblioteca estática que también usé. Así que agregar un prefijo al nombre de mi clase resolvió el problema.


  1. Nunca debes #import un archivo .m en otro archivo. Usted importa el archivo .h , si es necesario.
  2. No debe tener código ejecutándose en main antes de crear el grupo de autorelease. Eso va a causar problemas tarde o temprano. En este caso, el código de prueba probablemente debería ir en la application:didFininshLaunching en application:didFininshLaunching lugar.

Busque desde un archivo .m que pueda importar en cualquier archivo. Algunas veces es difícil encontrarlo


En mi caso, encontré una doble declaración en un archivo .m en Mis fases de compilación -> Compilar fuentes . Eliminar el duplicado solucionó el problema para mí. Espero que esto ayude.


Para otros usuarios donde las soluciones anteriores no eran el caso, esto era lo que estaba mal con el mío. Soy un programador perezoso, así que en lugar de reescribir todo el código para una nueva página (UIView) a menudo copiaré y pegaré los archivos .m y .h de UIView anteriores ... Al hacerlo, a veces me olvido de cambiar el nombre del Interfaz dentro de los archivos .m y .h que copié (incluso si cambio los nombres de los archivos) ... Esto también causará este mismo problema. ¡Buena suerte a todos los demás!