从另一个类访问数组

从另一个类访问数组

问题描述:

我有一个名为客户端的数组,我的一个类中,我想在另一个类中使用该数组中的信息。我已经建立了属性,并在我的第一堂课中合成了这个数组。我的第一个类的代码是从另一个类访问数组

@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); 
} 
+0

很难从你写的内容确定,但认为'alloc'创建一个新的对象...也就是说,与以前完全不同的,也不知道的关于你在之前存储的内容。 – 2012-08-07 14:43:35

从多个类访问对象,常用的方法是声明在父类的对象,然后通过该对象的共享实例为需要访问的所有子类。例如,您可以在AppDelegate中声明该数组,并在您的子类中设置数组属性,并将该数组的实例从AppDelegate传递给所有子类。例如:在您的应用程序委托中创建一个NSArray(myArray),然后在AppDelegate植入中,使用属性将myArray实例传递给您的子视图控制器。

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

UPDATED ANSWER: 对于第二种方法,最好在第一个类实现中声明数组,然后在实例化第二个类时,使用属性将数组实例传递给第二个类。在这个例子中,你需要有一个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 
+0

对于我想要做的第二种方法,你谈到了阵列将是相同的是我想要的。我试图使用属性,但我仍然是新的Objective C和Xcode,所以我不认为我做对了。你能否详细说明一下如何做到这一点? – Dravus 2012-08-07 15:00:08

+0

我已经更新了我的答案。希望这对你更有用,Dravus。 – TeaPow 2012-08-07 16:59:41

+0

好吧,我尝试了所有这一切,当我在第二课中做了一个NSLog的数组,它说空。但是,当我在第一个类中执行NSLog时,它会正确地打印出阵列。我不知道我做错了什么,如果你需要我的代码中的任何内容,请让我知道。 – Dravus 2012-08-07 17:21:54