4

毎回オブジェクトにアクセスするために、メソッドを C 関数として記述する必要があります。関数内でそのオブジェクトを宣言して割り当てたいと思います。すべての C 関数で共通のオブジェクトを維持するにはどうすればよいですか。出来ますか?

void method1
{
    NSMutableArray *sample = [[NSMutableArray alloc]init];
}

void method2
{
    NSMutableArray *sample = [[NSMutableArray alloc]init];
}
4

4 に答える 4

2

私はこれがうまくいくはずだと信じています(これは間違いなくスレッドセーフではありませんが):

NSMutableArray *sample = nil;

void method1 {
    if (sample == nil) {
        setupSample();
    }
    // ...
}

void method2 {
    if (sample == nil) {
        setupSample();
    }
    // ...
}

void setupSample {
    sample = [[NSMutableArray alloc] init];
    // Any other setup here
}
于 2012-08-22T12:08:07.410 に答える
2
 static NSMutableArray *sampleArray=nil;
 @implementation class
 void method1(void){
    if (sampleArray ==  nil){
       sampleArray = [[NSMutableArray alloc]init];
     }
  }                     
  void method2(void){
    if (sampleArray ==  nil){
       sampleArray = [[NSMutableArray alloc]init];
     }
}

親切にこれを使用

于 2012-08-22T12:22:55.643 に答える
1

クラス メソッドを使用して共有オブジェクトにアクセスすることができます。

何かのようなもの...

void method {
NSMutableArray *mySharedObj = [SampleRelatedContextClass sample];
}

これは見た目が良くなります。

于 2012-08-22T12:18:46.307 に答える
0

静的ファイル スコープ変数を作成します。

static NSMutableArray *sample=nil;

@implementation class

void method1(){ //you can write c functions outside  @implementation also
if (sample==nil) {
        sample = [[NSMutableArray alloc]init];
    }   

}

void method2(){
if (sample==nil) {
    sample = [[NSMutableArray alloc]init];
}
}
@end   

注: c 関数では object-c インスタンス変数を使用できません

于 2012-08-22T12:10:56.990 に答える