ios - 如果从外部调用,NSMutableArray 为空?

标签 ios objective-c arrays nsmutablearray

我有一个从 sqlite 表中读取数据并将数据保存在 NSMutableArray 中的应用程序,该数组在 UIViewController 的主 ViewController 类子类中声明,此方法在 viewDidLoad 中调用。这个 NSMutable 数组声明如下:

@property (strong, nonatomic) NSMutableArray *dataForTable;

此数据显示在一个表格中,该表格在应用程序启动时加载良好。现在我声明一个方法来记录这个 NSMutableArray 的内容

-(void) arrayTest {
NSLog(@" data in test array is%@",dataForTable);}

当我在这个类中的任何地方调用它时,输出也很好,例如在

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
[self arrayTest]; . . . . . . }

但是当我从另一个类调用 log 时,这个 NSMutableArray 中的数据突然变为(空)(UITableViewCell 的一个子类创建用于跟踪从左到右滑动单元格的 touchbegan 和 touchmoved)

[[ViewController alloc]arrayTest];

这给了我输出

data in test array is(null)

这是为什么呢?现在,如果我调用 -textFieldShouldBeginEditing,输出又好了。为什么数组本身会清空(或者也许我只是认为它会清空)然后稍后再次输出内容?

最佳答案

您可能没有在 init 方法中分配数组。仅仅因为您为数组声明了一个 @property,并不意味着它是为您创建的:

- (id)init {
    self = [super init];
    if (self) {
        self.arrayTest = [NSMutableArray array];
    }
    return self;
}

关于ios - 如果从外部调用,NSMutableArray 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18790252/

相关文章:

ios - 如何获得 UICollectionView 的滚动背景

ios - NSURLSession:流媒体延迟峰值

php - 将数组键和值传递给 Mysql 查询字符串

objective-c - iOS:UIPopoverController 错误

ios - 为什么 Xcode 不显示 CoreData 实体和属性的索引选项?

objective-c - 我应该使用什么设计模式来构建跨 OSX 和 iOS 库?

objective-c - 在非 ARC 代码中从 NSKeyedArchiver 中提取数据

c++ - C++ 中的静态变量-vs- Objective-C

javascript - 声明数组过滤中的条件

javascript - 合并不同 id 的对象数组