gpt4 book ai didi

iphone - 在类方法中访问实例变量,Objective C

转载 作者:行者123 更新时间:2023-12-03 20:52:18 27 4
gpt4 key购买 nike

这是我收到此错误时的原始代码

A类.h

+(ClassA*)methodA:(NSData*)data;

@property (nonatomic, strong) NSMutableArray    *arr; 
@property (nonatomic, strong) RXMLElement *rxmlRoot;

@end

A级.m

+(ClassA*)methodA:(NSData*)data {

//NSLog(@"class is %@",[name class]);
ClassA *ClassA = [[Stores alloc] init];
arr = [NSMutableArray array];
rxmlRoot = [RXMLElement elementFromXMLData:data];

}

我正在检查我的代码,现在我有两个选项来修复代码

选项A

ClassA.h

+(ClassA*)methodA:(NSData*)data;

@property (nonatomic, strong) NSMutableArray *arr;
@property (nonatomic, strong) RXMLElement *rxmlRoot;

@end

ClassA.m

+(ClassA*)methodA:(NSData*)data {

//NSLog(@"class is %@",[name class]);
ClassA *ClassA = [[Stores alloc] init];
ClassA.arr = [NSMutableArray array]; <----- this has been modified
ClassA.rxmlRoot = [RXMLElement elementFromXMLData:data];<----- this has been modified

}

选项B

ClassA.h

+(ClassA*)methodA:(NSData*)data;

@end

ClassA.m

static RXMLElement    *rxlRoot; <----- this has been added as class variable
static NSMutableArray *arr; <----- this has been added as class variable

+(ClassA*)methodA:(NSData*)data {

//NSLog(@"class is %@",[name class]);
ClassA *ClassA = [[Stores alloc] init];
arr = [NSMutableArray array];
rxmlRoot = [RXMLElement elementFromXMLData:data];

}

我尝试了 optionA 或 optionB,编译器没有任何提示,并且代码正常工作。

我看到许多帖子在 optionB 之后创建了类变量。

问题:当我们处理类方法和类变量时,optionA 也是一个好方法吗?

请就这个问题给我建议,顺便说一句,如果我在某些地方犯了错误,请纠正我。谢谢

最佳答案

Objective-C 中不存在“类变量”这样的东西。当您将变量声明为static时,它实际上是一个全局变量,仅限于编译它的文件的范围或方法/函数(或子表达式)的范围.

去掉调用中的Class.部分来设置变量;仅适用于该类的 .m 文件;这通常是您想要的模式(通常不鼓励真正的全局变量 - 但有时很有用)。

关于iphone - 在类方法中访问实例变量,Objective C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10500977/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com