objective C:在不同的类中使用NSMutableArray

时间:2011-04-13 09:35:11

标签: objective-c xcode class uiimage nsmutablearray

我创建了一个NSMutableArray * arrayImage之后创建了两个UIImageView * image1和* image2,现在我想填充这个数组

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

但我在ClassA中创建了UIImageView和NSMutableArray但是我想在ClassB的.m中的viewdidload中填充NSMutableArray,然后Xcode告诉我image1和image2是未声明的。我只是用了属性和合成。我该怎么办?

2 个答案:

答案 0 :(得分:0)

使用委托模式并将您的类传递给类b,如

如果你的班级b

id a;

@property (nonatomic, assign) id a;

并合成它。

现在在课堂上初始化你的班级 那么,

b.a=self;

现在你可以在b类的viewdidload中使用

self.a.arrayImage 

在互联网上研究代表模式,你会有清晰的看法。 祝你好运

答案 1 :(得分:0)

你可以尝试这样的事情,你必须在classA中保持对classB的引用,这样当你想在classB中向数组添加一个视图时,你可以通过classA的clasB属性访问classB的属性。尝试这样的事情。

//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];
}