Frage

initialisieren ich einen Blick (Image) durch:

Image *myImageView = [[Image alloc]init];
    myImageView.myId = randomImageNumber;
    [myImageView initWithImage:myImage];

Bei der Image-Klasse I ein Log (LOG 1) zu tun und bekommen die zuvor eingestellte randomImageNumber. Später, in der gleichen Klasse, kann ich ein zweites Protokoll (LOG2). Warum wird mein zweites Protokoll mehr keinen Wert haben?

Hier ist meine umsetzungs Datei der Klasse Bild:

@synthesize myId;
-(id) initWithImage: (UIImage *) anImage
{
    NSLog(@"LOG1%d",myId);
    if ((self = [super initWithImage:anImage]))
    {
        self.userInteractionEnabled = YES;
    }
    return self;
}

}
-(void)touchesBegan...
....
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
  NSLog(@"LOG2%d",myId);
}

Die „Rückkehr Selbst“ Leergut myid, die ich in der Header-Datei deklariert und die bei der Initialisierung festgelegt wurde. Wie verhindere ich das?

meine Header sieht wie folgt aus:

@interface Image : UIImageView 
{
   int myId;
}
@property (assign) int myId;

@end
War es hilfreich?

Lösung

Paar Dinge in Ihrem Code. NIEMALS ruft init mehr als einmal auf einem Objekt, das nur Schrauben auf Ihr Objekt.

Ändern es dazu:

Image *myImageView = [[Image alloc] initWithImage:myImage];
myImageView.myId = randomImageNumber;

Das ist dein Problem, standardmäßig, wenn eine Unterklasse von NSObject Initialisierung werden alle Eigenschaften sind auf 0 (oder nil wenn sie Zeiger sind).

Wenn Sie einen Standardwert für myId haben müssen, dann tun:

// Image.m

@implementation

// other code

-(id) initWithImage:(UIImage *) image
{
    if (self = [super initWithImage:image])
    {
         self.myId = randomImageNumber;
    }

    return self;
}

// other code

@end

Andere Tipps

Ich glaube, ich es gefunden:

https: / /www.google.com/maps/place/Variable/@53.626739,10.025728,17z/data=!3m1!4b1!4m2!3m1!1s0x47b1885360fab615:0x584b82c7dfb5f612

Können Sie überprüfen, ob diese Variable bei Ihnen ist?

besties phil

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top