objective-c - NSArray getter 方法未返回正确的值

标签 objective-c ios properties nsmutablearray nsarray

我正在编写一个程序,其中一个类(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/

相关文章:

objective-c - 如何将变暗的背景添加到自定义 UIPopoverBackgroundView

objective-c - 如何为 iphone 应用程序创建多个主题/皮肤?

iphone - 音频队列 - 没有匹配函数来调用 'AudioSessionInitialize'

ios - NSURLCache 和数据保护

c# - 模拟对具有 List 类型属性的对象的调用

ios - 查找给定形状的外线

ios - 如何以秒为单位确定 CMDeviceMotion 的年龄

iphone - NSString UITextView 不替换以前的文本

java - ProcessBuilder执行后加载属性

ios - Objective-C 从字符串中获取类属性