Какао призрак uiview - не может получить доступ к моему ivar после init

У меня странная проблема: при создании представления из подкласса UIView, в экземпляр другого подкласса UIView, я имею доступ к объекту только в методе, в котором я его создаю. В других методах объект имеет значение NULL: я не могу получить доступ, изменить или удалить объект из суперпредставления. код (упрощенный):

// the first class (named Table):
@class Image;
@interface Table : UIView {
   Image *image;
   }
@end

#import "Image.h"
@implementation Table
- init{
    if((self = [super init])) {
    self.frame = CGRectMake(0, 416, 320, 416);
    self.tag = 416;
    // (blah...blah...)
    }
  return self;
  }
@end

// the second class (named Image):
@class Table 
@interface Image : UIView{ 
Table *vueGbif; 
}
-(void) createGbif;
-(void) removeGbif; 
@end

#import "Table.h" 
@implementation Image
-(void) createGbif{ 
vueGbif = [[Table alloc] init]; 
[self addSubview:vueGbif]; 
vueGbif.frame = CGRectMake(0, 0, 320, 416); //<-- here, "vueGbif" 
// is not null and can be set 
}

-(void) removeGbif{ 
[vueGbif removeFromSuperview]; //<-- here, vueGbif
// no longer exists : NSLog returns "null". 
} 
@end

Изменить: Проблема в настоящее время, очень странно... На самом деле, на самом деле у меня есть доступ к iVar "vueGbif", только если я вызываю метод "removeGbif" из второго класса (я создаю экземпляр первого класса в этом), например, с действием на кнопке. В этом случае инструкция "removeFromSuperview" выполняется правильно, а созданное представление удаляется. И "vueGbif" существует и не равен NULL. Но... Если я добавлю кнопку к представлению "vueGbif", при его создании и добавлении в текущее представление (которое является экземпляром второго класса), и позже, если я коснусь этой кнопки, чтобы вызвать "removeGbif" во втором классе в это время "vueGbif" равен NULL во втором классе, а removeFromSuperview вообще не работает.

Любая идея?

0 ответов

Другие вопросы по тегам