我必须将方法编写为 C 函数以便每次都访问该对象,我想在函数内声明该对象并分配它。如何在所有 C 函数中维护一个公共对象。是否可以?
void method1
{
NSMutableArray *sample = [[NSMutableArray alloc]init];
}
void method2
{
NSMutableArray *sample = [[NSMutableArray alloc]init];
}
我必须将方法编写为 C 函数以便每次都访问该对象,我想在函数内声明该对象并分配它。如何在所有 C 函数中维护一个公共对象。是否可以?
void method1
{
NSMutableArray *sample = [[NSMutableArray alloc]init];
}
void method2
{
NSMutableArray *sample = [[NSMutableArray alloc]init];
}
我相信这应该可行(尽管这绝对不是线程安全的):
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
}
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];
}
}
请使用这个
您可能希望使用类方法来访问共享对象。
就像是...
void method {
NSMutableArray *mySharedObj = [SampleRelatedContextClass sample];
}
这看起来更好。
创建静态文件范围的变量。
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 实例变量