【发布时间】:2014-10-11 11:22:29
【问题描述】:
我正在对两个可变数组执行一些基本操作。但是,该程序的行为很奇怪。第二个数组在函数结束后自行重置。
首先,我为两个数组分配内存。然后我用 0..10 的数字填充 originalArray。
我的代码如下所示。
ViewController.h
@property (nonatomic, strong) NSMutableArray *originalArray;
@property (nonatomic, strong) NSMutableArray *secondArray;
ViewController.c
static int level=1;
- (void)viewDidLoad
{
[super viewDidLoad];
[self firstArrayInit];
[self secondArrayInit];
[self startDisplaying];
}
-(void) firstArrayInit{
self.originalArray = [NSMutableArray array];
for (int i=0; i<10; i++) {
[self.originalArray addObject:[NSNumber numberWithInteger:i]];
}
}
-(void)secondArrayInit{
self.secondArray = [[NSMutableArray alloc]init];
}
-(void) startDisplaying{
NSLog(@"Initial Array is %@", self.originalArray);
self.mytimer = [NSTimer scheduledTimerWithTimeInterval:2
target:self
selector:@selector(displayNumber)
userInfo:nil
repeats:YES];
NSLog(@"SecondA: %@", self.secondArray); //prints EMPTY ARRAY!!
}
-(void) displayNumber{
static int num=0;
NSLog(@"Num: %d", num);
NSLog(@"Level: %d", level);
if (num < level){
//display on a label
myLabel.text = [NSString stringWithFormat:@"%@", [self.originalArray objectAtIndex:num]];
[self addToSecondArray:num];
num++;
NSLog(@"SecondA: %@", self.secondArray); //prints the contents of Array FINE!!
}
else{
NSLog(@"SecondA2: %@", self.secondArray); //PRINTS EMPTY ARRAY!!
}
}
-(void)addToSecondArray:(int)myNumber{
[self.secondArray addObject:[self.originalArray objectAtIndex:myNumber]];
}
输出:
Initial Array is (
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
)
Num: 0
Level: 1
SecondA: (
0
)
Num:1
Level: 1
SecondA2: (
)
【问题讨论】:
-
这段代码单独完全没用。通过调用
startDisplaying、viewDidLoad、viewWill/DidAppear等发布整个代码。 -
我已经编辑了我的帖子。
-
向我们展示声明。
-
startDisplaying中会为空,因为尚未调用displayNumber。 -
我猜你的问题是
SecondA2不应该是空的?level的值是多少?应用的输出是什么(输出发生的顺序也很重要)?
标签: ios objective-c arrays nsmutablearray