Какао призрак 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 вообще не работает.
Любая идея?