Где моя переменная?Objective-C - PullRequest
       2

Где моя переменная?Objective-C

3 голосов
/ 15 октября 2010

Я инициализирую представление (Image) через:

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

В классе Image я делаю Log (LOG1) и получаю ранее установленный randomImageNumber.Позже, в том же классе, я делаю второй журнал (LOG2).Почему мой второй журнал больше не имеет значения?

Здесь мой файл реализации образа класса:

@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);
}

"return self" очищает myId, который я объявил в заголовочном файлеи который был установлен при инициализации.Как мне это предотвратить?

мой заголовочный файл выглядит так:

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

@end

Ответы [ 2 ]

7 голосов
/ 23 мая 2014

Мне кажется, я нашел это:

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

Можете ли вы проверить, является ли эта переменная вашей?

besties phil

2 голосов
/ 15 октября 2010

Пара вещей в вашем коде. НИКОГДА не вызывайте init более одного раза для объекта, который просто портит ваш объект.

Измените это на:

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

Это ваша проблема, по умолчанию при инициализации подкласса NSObject все свойства установлены на 0 (или nil, если они являются указателями).

Если вам нужно значение по умолчанию для myId, сделайте следующее:

// Image.m

@implementation

// other code

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

    return self;
}

// other code

@end
...