在iPhone中访问不同C函数中的相同对象?

时间:2012-08-22 12:00:50

标签: iphone objective-c ios5

我必须将方法编写为C函数以便每次访问对象,我想在函数内声明该对象并分配它。如何在所有C函数中维护公共对象。可能吗?

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

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

4 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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];
     }
}

请使用此

答案 2 :(得分:1)

您可能希望使用类方法来访问共享对象。

类似......

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

这看起来更好。

答案 3 :(得分: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实例变量