我有一个从 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/