Это эффективно для таблицы? - PullRequest
0 голосов
/ 17 сентября 2011

Я просто пытаюсь уточнить, что это самый простой и эффективный способ создать массив заголовков для ячеек в моем табличном представлении.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

contentArray = [[NSArray arrayWithObjects:@"Hi1", @"Hi2", @"Hi3", @"Hi4", @"Hi5", @"Hi6", @"Hi7", nil] retain];
return [contentArray count];

[contentArray release];
}

Должен ли я делать это по-другому или настолько эффективно, насколько это возможно? Потому что в настоящее время это немного запаздывает, и я хотел бы сделать это немного быстрее.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 17 сентября 2011

Вызовы метода tableView:numberOfRowsInSection: могут запускаться различными событиями.Вы создаете массив при каждом вызове, что увеличивает лаг.Попробуйте вместо этого:

// .h file
@property (nonatomic, retain) NSArray *contentArray;

// .m file
@synthesize contentArray=_contentArray;

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [self.contentArray count];
}

-(void) viewDidLoad {
  self.contentArray = [NSArray arrayWithObjects:@"Hi1", @"Hi2", @"Hi3", @"Hi4", @"Hi5", @"Hi6", @"Hi7", nil];
  [super viewDidLoad];
}
-(void) dealloc {
    [_contentArray release]
    [super dealloc];
}
0 голосов
/ 17 сентября 2011

То, что вы делаете в этом методе, почти не влияет на производительность прокрутки вашего табличного представления, потому что оно будет вызываться очень ограниченное количество раз (если ваша таблица не содержит сотни или тысячи разделов).

Тем не менее, ваш код содержит много ошибок.Во-первых, строка ниже return никогда не выполняется, поэтому у вас есть утечка памяти.Во-вторых, вы должны создать массив вне метода и использовать свойство для его хранения.Но это связано не столько с производительностью, сколько с хорошим стилем кодирования.В конце концов, вам понадобится содержимое массива несколькими способами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...