1
4

2 に答える 2

1

1つの可能性は、プロパティを使用することです

.h で

@property (copy, nonatomic) NSArray *locations;

メートルで

@synthesize locations;
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.locations = [NSArray arrayWithObjects:@"New Delhi", @"Durban", @"Islamabad", @"Johannesburg", @"Kathmandu", @"Dhaka", @"Paris", @"Rome", @"Colorado Springs", @"Rio de Janeiro", @"Beijing", @"Canberra", @"Malaga", @"Ottawa", @"Santiago de Chile", nil];

}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.locations count];
}
于 2012-06-05T21:04:57.200 に答える
1

初め:

locations = [NSArray arrayWithObjects:@"New Delhi", @"Durban", @"Islamabad", @"Johannesburg", @"Kathmandu", @"Dhaka", @"Paris", @"Rome", @"Colorado Springs", @"Rio de Janeiro", @"Beijing", @"Canberra", @"Malaga", @"Ottawa", @"Santiago de Chile", nil];

[NSArray arrayWithObjects...]自動解放されたオブジェクトを返します。インスタンス変数に直接設定しているため、保持する必要があります。

locations = [[NSArray arrayWithObjects:@"New Delhi", @"Durban", @"Islamabad", @"Johannesburg", @"Kathmandu", @"Dhaka", @"Paris", @"Rome", @"Colorado Springs", @"Rio de Janeiro", @"Beijing", @"Canberra", @"Malaga", @"Ottawa", @"Santiago de Chile", nil] retain];

: インスタンス変数の代わりにプロパティを使用することをお勧めします。

2番:

cell = [[UITableViewCell alloc] initWithStyle:
                UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

メモリ管理規則によると、 alloc init は保持されたオブジェクトを返すため、ここでリークします。次のように変更します。

cell = [[[UITableViewCell alloc] initWithStyle:
                UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
于 2012-06-05T21:08:54.990 に答える