Pregunta

Tengo el siguiente código:

@interface UIAcceleration (Simulation)

- (id) initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az;

@end

@implementation UIAcceleration (Simulation)

-(id)initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az 
{
    if (self = [super init])
    {
        timestamp = aTimeStamp;
        x = ax;
        y = ay;
        z = az;
    }

    return self;
}       

@end

al compilar esto para el SDK del simulador, todo funciona bien. Al compilar para el SDK del dispositivo, obtengo el siguiente error de vinculador:

  "_OBJC_IVAR_

Tengo el siguiente código:

@interface UIAcceleration (Simulation)

- (id) initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az;

@end

@implementation UIAcceleration (Simulation)

-(id)initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az 
{
    if (self = [super init])
    {
        timestamp = aTimeStamp;
        x = ax;
        y = ay;
        z = az;
    }

    return self;
}       

@end

al compilar esto para el SDK del simulador, todo funciona bien. Al compilar para el SDK del dispositivo, obtengo el siguiente error de vinculador:

<*>

¿Qué estoy haciendo mal? ¿Qué diferencia hay entre la vinculación con los marcos de Simulator (es decir, UIKit) y la vinculación con los marcos de dispositivos?

UIAcceleration.x", referenced from: _OBJC_IVAR_

Tengo el siguiente código:

@interface UIAcceleration (Simulation)

- (id) initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az;

@end

@implementation UIAcceleration (Simulation)

-(id)initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az 
{
    if (self = [super init])
    {
        timestamp = aTimeStamp;
        x = ax;
        y = ay;
        z = az;
    }

    return self;
}       

@end

al compilar esto para el SDK del simulador, todo funciona bien. Al compilar para el SDK del dispositivo, obtengo el siguiente error de vinculador:

<*>

¿Qué estoy haciendo mal? ¿Qué diferencia hay entre la vinculación con los marcos de Simulator (es decir, UIKit) y la vinculación con los marcos de dispositivos?

UIAcceleration.x$non_lazy_ptr in UIAcceleration+IRowAdditions.o "_OBJC_IVAR_

Tengo el siguiente código:

@interface UIAcceleration (Simulation)

- (id) initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az;

@end

@implementation UIAcceleration (Simulation)

-(id)initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az 
{
    if (self = [super init])
    {
        timestamp = aTimeStamp;
        x = ax;
        y = ay;
        z = az;
    }

    return self;
}       

@end

al compilar esto para el SDK del simulador, todo funciona bien. Al compilar para el SDK del dispositivo, obtengo el siguiente error de vinculador:

<*>

¿Qué estoy haciendo mal? ¿Qué diferencia hay entre la vinculación con los marcos de Simulator (es decir, UIKit) y la vinculación con los marcos de dispositivos?

UIAcceleration.y", referenced from: _OBJC_IVAR_

Tengo el siguiente código:

@interface UIAcceleration (Simulation)

- (id) initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az;

@end

@implementation UIAcceleration (Simulation)

-(id)initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az 
{
    if (self = [super init])
    {
        timestamp = aTimeStamp;
        x = ax;
        y = ay;
        z = az;
    }

    return self;
}       

@end

al compilar esto para el SDK del simulador, todo funciona bien. Al compilar para el SDK del dispositivo, obtengo el siguiente error de vinculador:

<*>

¿Qué estoy haciendo mal? ¿Qué diferencia hay entre la vinculación con los marcos de Simulator (es decir, UIKit) y la vinculación con los marcos de dispositivos?

UIAcceleration.y$non_lazy_ptr in UIAcceleration+IRowAdditions.o "_OBJC_IVAR_

Tengo el siguiente código:

@interface UIAcceleration (Simulation)

- (id) initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az;

@end

@implementation UIAcceleration (Simulation)

-(id)initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az 
{
    if (self = [super init])
    {
        timestamp = aTimeStamp;
        x = ax;
        y = ay;
        z = az;
    }

    return self;
}       

@end

al compilar esto para el SDK del simulador, todo funciona bien. Al compilar para el SDK del dispositivo, obtengo el siguiente error de vinculador:

<*>

¿Qué estoy haciendo mal? ¿Qué diferencia hay entre la vinculación con los marcos de Simulator (es decir, UIKit) y la vinculación con los marcos de dispositivos?

UIAcceleration.z", referenced from: _OBJC_IVAR_

Tengo el siguiente código:

@interface UIAcceleration (Simulation)

- (id) initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az;

@end

@implementation UIAcceleration (Simulation)

-(id)initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az 
{
    if (self = [super init])
    {
        timestamp = aTimeStamp;
        x = ax;
        y = ay;
        z = az;
    }

    return self;
}       

@end

al compilar esto para el SDK del simulador, todo funciona bien. Al compilar para el SDK del dispositivo, obtengo el siguiente error de vinculador:

<*>

¿Qué estoy haciendo mal? ¿Qué diferencia hay entre la vinculación con los marcos de Simulator (es decir, UIKit) y la vinculación con los marcos de dispositivos?

UIAcceleration.z$non_lazy_ptr in UIAcceleration+IRowAdditions.o "_OBJC_IVAR_

Tengo el siguiente código:

@interface UIAcceleration (Simulation)

- (id) initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az;

@end

@implementation UIAcceleration (Simulation)

-(id)initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az 
{
    if (self = [super init])
    {
        timestamp = aTimeStamp;
        x = ax;
        y = ay;
        z = az;
    }

    return self;
}       

@end

al compilar esto para el SDK del simulador, todo funciona bien. Al compilar para el SDK del dispositivo, obtengo el siguiente error de vinculador:

<*>

¿Qué estoy haciendo mal? ¿Qué diferencia hay entre la vinculación con los marcos de Simulator (es decir, UIKit) y la vinculación con los marcos de dispositivos?

UIAcceleration.timestamp", referenced from: _OBJC_IVAR_

Tengo el siguiente código:

@interface UIAcceleration (Simulation)

- (id) initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az;

@end

@implementation UIAcceleration (Simulation)

-(id)initWithTimestamp:(NSTimeInterval)aTimeStamp
                     X:(UIAccelerationValue)ax
                     Y:(UIAccelerationValue)ay
                     Z:(UIAccelerationValue)az 
{
    if (self = [super init])
    {
        timestamp = aTimeStamp;
        x = ax;
        y = ay;
        z = az;
    }

    return self;
}       

@end

al compilar esto para el SDK del simulador, todo funciona bien. Al compilar para el SDK del dispositivo, obtengo el siguiente error de vinculador:

<*>

¿Qué estoy haciendo mal? ¿Qué diferencia hay entre la vinculación con los marcos de Simulator (es decir, UIKit) y la vinculación con los marcos de dispositivos?

UIAcceleration.timestamp$non_lazy_ptr in AccelerometerSimulation.o ld: symbol(s) not found collect2: ld returned 1 exit status

¿Qué estoy haciendo mal? ¿Qué diferencia hay entre la vinculación con los marcos de Simulator (es decir, UIKit) y la vinculación con los marcos de dispositivos?

¿Fue útil?

Solución 3

Bien, como ninguna de las respuestas proporcionadas me ayudó, hice algo diferente.

Creé una clase con exactamente la misma interfaz que UIAcceleration. Dado que ambos tienen el mismo diseño de memoria, puedo repartir con seguridad entre los punteros de UIAcceleration y mi clase. Al menos mientras gcc quiera.

Otros consejos

Creo que probablemente incluyó solo la versión de simulador del marco UIKit. No estoy tan seguro de esto, pero vaya al panel izquierdo en Xcode y debajo de la carpeta Frameworks , haga clic derecho en UIKit.framework y Obtenga información . En la mía, la ruta es /System/Library/Frameworks/UIKit.framework y justo debajo de ella dice Tipo de ruta: " Relativo al SDK actual " Eso debería generar automáticamente el marco correcto en función de lo que estés creando.

Vale la pena un cheque.

Esto puede estar relacionado con este problema con categorías en el iPhone. Intente agregar -ObjC (iPhone OS 2.x) y -all_load (iPhone OS 3.0) a su " Otros indicadores de vinculador " ;.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top