2011-09-17 11 views
0

これは、私のテーブルビュー内のセルのタイトルの配列を作成する最も簡単で効率的な方法であることを明確にしようとしています。これはテーブルビューにとって効率的ですか?

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

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

[contentArray release]; 
} 

私はこれを別のやり方、あるいはこれを効率的かつ最高に行うべきでしょうか?現在は少し遅れているので、もう少し速くしたいと思っています。

ありがとうございます!

答えて

3

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

うわー!あなたが共有したこのコードを使用した後、私はかなり大きな違いに気付きます。ありがとう、答えを受け入れ、それを投票しました! –

0

数百または数千のセクションを含む)。

つまり、コードには多くのエラーが含まれています。まず、return以下の行は決して実行されないので、メモリリークが発生します。次に、メソッドの外側に配列を作成し、それを格納するプロパティを使用する必要があります。しかし、それはパフォーマンスとあまり関係がなく、良いコーディングスタイルでより多くのことをします。結局のところ、配列の内容は複数のメソッドで必要になります。

関連する問題