0

我的一个类中有一个名为 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);
}
4

1 回答 1

0

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

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

或者,如果您愿意;您可以在您的第一个类中声明该数组,然后使用属性将数组实例从您的第一个类传递给您的第二个类。然后,在您的第二堂课中所做的任何更改都将在您的第一堂课中可用,因为实例是相同的。

更新答案:对于第二种方法,您最好在第一个类实现中声明数组,然后在实例化第二个类时,使用属性将数组的实例传递给第二个类。在这个例子中,你需要在你的第二个类中有一个 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
于 2012-08-07T14:49:01.020 回答