基本的に、私の問題は、ループを介してUIViewの3つのインスタンスを作成しようとしていることです。私はARCを使用していますが、自分がやりたいことがARCで可能かどうかはよくわかりません。これが私が現在持っているコードです:
NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"RoomView"
owner:self
options:nil];
NSMutableArray *roomViews = [[NSMutableArray alloc] initWithCapacity:[gtb.rooms count]];
for (i = 0; i < [gtb.rooms count]; i++)
{
RoomView *rcv = [[RoomView alloc] init];
NSDictionary *room = [gtb.rooms objectAtIndex:i];
rcv = [nibViews objectAtIndex:0];
NSLog(@"Start rcv = %@", rcv);
rcv.roomNumber.text = [NSString stringWithFormat:@"Chambre %d", i + 1];
rcv.roomType.text = [room objectForKey:@"roomType"];
[rcv setFrame:CGRectMake(0, sizeOfContent, rcv.frame.size.width, rcv.frame.size.height)];
sizeOfContent += rcv.frame.size.height;
[roomViews addObject:rcv];
NSLog(@"End rcv = %@", rcv);
}
for (i = 0; i < [gtb.rooms count]; i++)
NSLog(@"Room #%i : %@", i, [roomViews objectAtIndex:i]);
そして、これが私がログに持っているものです:
2012-09-20 10:15:00.287 AppName[2792:707] Start rcv = <RoomView: 0x148570; frame = (0 0; 320 107); autoresize = W+H; layer = <CALayer: 0x148510>>
2012-09-20 10:15:00.289 AppName[2792:707] End rcv = <RoomView: 0x148570; frame = (0 420; 320 107); autoresize = W+H; layer = <CALayer: 0x148510>>
2012-09-20 10:15:00.312 AppName[2792:707] Start rcv = <RoomView: 0x148570; frame = (0 420; 320 107); autoresize = W+H; layer = <CALayer: 0x148510>>
2012-09-20 10:15:00.314 AppName[2792:707] End rcv = <RoomView: 0x148570; frame = (0 527; 320 107); autoresize = W+H; layer = <CALayer: 0x148510>>
2012-09-20 10:15:00.316 AppName[2792:707] Start rcv = <RoomView: 0x148570; frame = (0 527; 320 107); autoresize = W+H; layer = <CALayer: 0x148510>>
2012-09-20 10:15:00.317 AppName[2792:707] End rcv = <RoomView: 0x148570; frame = (0 634; 320 107); autoresize = W+H; layer = <CALayer: 0x148510>>
2012-09-20 10:15:00.319 AppName[2792:707] Room #0 : <RoomView: 0x148570; frame = (0 634; 320 107); autoresize = W+H; layer = <CALayer: 0x148510>>
2012-09-20 10:15:00.323 AppName[2792:707] Room #1 : <RoomView: 0x148570; frame = (0 634; 320 107); autoresize = W+H; layer = <CALayer: 0x148510>>
2012-09-20 10:15:00.325 AppName[2792:707] Room #2 : <RoomView: 0x148570; frame = (0 634; 320 107); autoresize = W+H; layer = <CALayer: 0x148510>>
[rcv autoRelease]
ARCを使用していなかった場合は、ループの最後に配置する必要がありましたが、ARCでは使用できません。
それを解決するための解決策はありますか、またはこのファイルのARCを無効にする必要がありますか?
ご協力いただきありがとうございます !