从另一个类访问数组

时间:2012-08-07 14:33:07

标签: ios ipad

我的一个类中有一个名为client的数组,我想在另一个类中使用该数组中的信息。我已经设置了属性并在我的第一堂课中合成了数组。我的第一堂课的代码是

@synthesize client;

...


- (IBAction)testing:(id)sender {
    NSString *textContent = myTextView.text;
    textContent = [textContent stringByReplacingOccurrencesOfString:@" " withString:@""];
    client = [textContent componentsSeparatedByString:@"."]; 
    NSLog(@"%@", client);
}

在我的第二堂课中,我尝试为我的第一堂课输入h文件,然后只是访问数组。我正在使用的代码是

- (IBAction)ButtonStuff:(id)sender {
    ArrayManipulationViewController *myClass = [[ArrayManipulationViewController alloc]init];
    NSLog(@"Second Interface");
    NSArray *test = myClass.client;
    NSLog(@"%@", test);
}

1 个答案:

答案 0 :(得分:0)

要从多个类访问对象,常见的方法是在父类中声明对象,然后将该对象的共享实例传递给需要访问的所有子类。例如,您可以在AppDelegate中声明数组,并在子类中设置数组属性,并将数组实例从AppDelegate传递到所有子类。

例如:在你的app委托中创建一个NSArray(myArray),然后在AppDelegate植入中,使用属性将myArray实例传递给子视图控制器。

或者,如果您愿意;您可以在第一个类中声明数组,然后使用属性将数组实例从第一个类传递到第二个类。然后,由于INSTANCE是相同的,您的第二堂课将进行任何更改。

更新的答案: 对于第二种方法,最好在第一个类实现中声明数组,然后在实例化第二个类时,使用属性将数组实例传递给第二个类。在此示例中,您需要在第二个类中具有NSArray属性才能使用[secondClassInstance setClient: client];

将数组传递给它

您的第二个类界面可能如下所示:

@interface SecondClass : NSObject
{
   NSArray *client;
}

@property (nonatomic, retain) NSArray *client; // don't forget to synthesize
@end

然后,在第一堂课中,您可以执行以下操作来传递您的数组实例:

NSArray *client = [[NSArray alloc] initWithObjects:@"Object 1", @"Object 2"];

//...

SecondClass *secondClass = [[SecondClass alloc] init];
[secondClass setClient: client]; // passing the original client instance here

// don't forget to release secondClass instance when finished