Цель C: использовать NSMutableArray в разных классах

Я создал два UIImageView * image1 и * image2 после создания массива NSMutableArray * arrayImage, теперь я хочу заполнить этот массив

arrayImage = [[NSMutableArray alloc] initWithObjects: image1, image2, nil];

но я создал UIImageView и NSMutableArray в ClassA, но я хочу заполнить NSMutableArray в viewdidload в .m класса B, а затем Xcode скажет мне, что image1 и image2 не объявлены. Я просто использовал свойство и синтезировал. Что я могу сделать?

Ответ 1

Вы можете попробовать что-то вроде этого, вы должны сохранить ссылку на classB внутри класса A, чтобы при добавлении представления в массив в классе B вы можете получить доступ к свойствам класса B через свойство classA clasB. Попробуйте что-то вроде этого.

//ClassA .h file 
#import @"ClassB.h"
@interface ClassA : UIViewController { 
    UIImageView     *view1, view2*;
    ClassB          *classB; 
}
@end

//Inside ClassA .m file 
-(void)viewDidLoad{
    //construct view1 and view2 here or make the IBOutlets and link them in IB 
    classB = [[ClassB alloc] init];
    [classB.imageArray addObject:view1];
    [classB.imageArray addObject:view2];
}

//ClassB .h file 
@interface ClassB : UIViewController {
    NSMutableArray *imageArray; 
}
@property(nonatomic, retain) NSMutableArray *imageArray; 
@end


//Inside ClassB .m file
@synthesize imageArray; 

-(id)init{
    if (self = [super init]){
        imageArray = [[NSMutableArray alloc] init];
    }
    return self; 
}

-(void)dealloc{
    [imageArray release];
    [super dealloc];
}

Ответ 2

используйте шаблон делегирования и передайте свой класс объекту классу b, например

если ваш класс b

id a;

@property (nonatomic, assign) id a;

и синтезируйте его.

теперь начните свой класс b в классе a то

b.a=self;

thats теперь вы можете использовать в viewdidload в классе b как

self.a.arrayImage 

и изучите образец делегата в Интернете, у вас будет четкое представление. удачи