0

クラスの 1 つに client という配列があり、その配列の情報を別のクラスで使用したいと考えています。プロパティを設定し、最初のクラスで配列を合成しました。私の最初のクラスのコードは

@synthesize client;

...


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

2 番目のクラスでは、最初のクラスの 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インスタンスをサブビューコントローラーに渡します。

または、必要に応じて; 最初のクラスで配列を宣言してから、プロパティを使用して最初のクラスから2番目のクラスに配列インスタンスを渡すことができます。次に、インスタンスが同じであるため、2番目のクラスで行われた変更はすべて1番目のクラスで使用できます。

更新された回答:2番目のアプローチでは、最初のクラスの実装で配列を宣言するのが最適です。次に、2番目のクラスをインスタンス化するときに、プロパティを使用して配列のインスタンスを2番目のクラスに渡します。この例では、を使用して配列を渡すことができるように、2番目のクラスにNSArrayプロパティが必要です。[secondClassInstance setClient: client];

2番目のクラスのインターフェースは次のようになります。

@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 に答える