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 函数中使用objective-c 实例变量

于 2012-08-22T12:10:56.990 回答