我正在编写一个程序,其中一个类(classA)生成一个随机数并将其添加到一个可变数组中。 View Controller (viewControllerA) 调用 classA 中的方法并接收随机数数组并将其存储在自己的数组中。
我有另一个类(classB)需要相同的数组。 viewcontrollerA 完成需要对数组执行的操作后,它会调用 classB 中数组的 setter 方法。我在 classB 中的数组的 setter 和 getter 方法中调用 NSLog 来检查它是否加载。
-(void)setRandomNumberArray:(NSArray *)randomNumberArray{
_randomNumberArray = randomNumberArray;
NSLog(@"%@ setter", _randomNumberArray);
}
-
-(NSArray *)randomNumberArray{
if (!_randomNumberArray) {
_randomNumberArray = [[NSArray alloc] init];
}
NSLog(@"%@ getter", _randomNumberArray);
return _randomNumberArray;
}
当我在viewControlerA中调用setter方法时,NSLog返回数组的值。 当我在 viewControllerB 中调用 getter 方法时,NSLog 不会从 getter 方法中打印任何内容。
2012-05-29 23:57:43.589 SwipeGame[8603:f803] (
) getter
这显然是在设置数组,但在我想要获取它时不会保留它。到底是怎么回事?我尝试了多种其他技术,它总是设置数组,但当我想“获取”数组时不会保留它。
我的数组的属性设置为保留顺便说一句..
更新: 是的,我正在使用 ARC。我的属性(property)声明是:
@property (nonatomic, strong) NSArray *randomNumberArray
已解决: 感谢你的帮助!这是实例的问题。
最佳答案
你的setter方法没有提到viewControllerB。您只是设置一个内部变量。 viewControllerB 如何知道数组已被设置?
最简单的方法是仅使用@properties
和@synthesize
:
// in A
viewControllerB.array = _array;
至于保留问题:如果你使用ARC,则不必担心。
关于objective-c - NSArray getter 方法未返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10811012/