У меня странная проблема: при создании представления из подкласса 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 вообще не работает.
Есть идеи?