Ваш код добавляет один и тот же экземпляр снова и снова, а не новый экземпляр каждый раз.
UIView *testView = [[UIView alloc] init];
testView.backgroundColor = [UIColor blueColor];
for (int i=0; i<5; i++) {
testView.frame = CGRectMake(0.0, (i+1)*40.0, 200.0, 20.0);
[self.window addSubview:testView];
}
[testView release];
и
for (int i=0; i<5; i++) {
UIView *testView = [[UIView alloc] init];
testView.backgroundColor = [UIColor blueColor];
testView.frame = CGRectMake(0.0, (i+1)*40.0, 200.0, 20.0);
[self.window addSubview:testView];
[testView release];
}
- две совершенно разные вещи.первое на самом деле имеет очень мало смысла и приводит к единственной синей полосе, второе имеет гораздо больше смысла и дает 5 синих полос - я думаю, это то, что вы хотите.
посмотрите на следующее, это будетсоздайте 5 прямоугольников со всеми разными цветами - это показывает, что каждый прямоугольник является отдельным экземпляром, загруженным из пера:
for (int i=0; i<5; i++) {
NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"aView" owner:self options:nil];
UIView *nibView = [nibObjects objectAtIndex:0];
nibView.backgroundColor = [UIColor colorWithRed:(i+1)*0.14 green:(i+1)*0.11 blue:200.0 alpha:1.0];
nibView.frame = CGRectMake(0.0, (i+1)*40.0, 200.0, 20.0);
[self.window addSubview:nibView];
}
сейчас, если мы назначим наш массив nibObjects только один раз перед циклом, мыопять та же проблема в том, что мы добавляем один и тот же экземпляр снова и снова, что приведет только к одному прямоугольнику:
NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"aView" owner:self options:nil];
for (int i=0; i<5; i++) {
UIView *nibView = [nibObjects objectAtIndex:0];
nibView.backgroundColor = [UIColor colorWithRed:(i+1)*0.14 green:(i+1)*0.11 blue:200.0 alpha:1.0];
nibView.frame = CGRectMake(0.0, (i+1)*40.0, 200.0, 20.0);
[self.window addSubview:nibView];
}
надеюсь, это поможет