web-dev-qa-db-ja.com

initWithFrame:reuseIdentifier:廃止予定

私のプロジェクトでは、Deprecations警告があります、initWithFrame:reuseIdentifier:は非推奨です

どういう意味かわかりませんが、この警告の解決方法を教えてもらえますか?

ここに短いコードがあります

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }

    // Set up the cell...
    NSString *cellValue = [itemsList objectAtIndex:indexPath.row];
    cell.textLabel.text = cellValue;

    return cell;
}

警告はその行にあります:

cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
30
a3116b

このAppleのページを見てください

ここで、赤くハイライトされた関数とプロパティは、今後のSDKでAppleによって削除される予定です。

Appの作成中にそれらを回避する必要があります。

クラッシュすることなく実行できる長期的なプロジェクトが必要なため

非推奨のメソッドとは、置き換えられた/廃止されたが、現在のバージョンの言語では引き続き有効であることを意味します。回避する必要があり、問題やエラーが発生する可能性があります。使用できる代替方法をリストするドキュメントを確認してください。

ここではメソッドを使用する必要があります

 - initWithStyle:reuseIdentifier: 

次に、ifループは次のようになります。

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
              reuseIdentifier:CellIdentifier] autorelease];
}

この問題は、はじめに表示されますIOS 5 Mark、Nutting、La Marcheによる開発。一部の読者は、廃止されたコードが265ページに記載されているこの本からここに来る場合があります。

cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier: sectionsTableIdentifier] autorelease];

に置き換える必要がある(上記の貢献者が指摘しているように)

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

自動参照カウントが気に入らないため、自動リリースも削除したことに注意してください。

お役に立てれば。

9
Tim

このコードを使用してください:

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                 reuseIdentifier:CellIdentifier] autorelease];
1
Yash Kaushik

これはあなたの問題を解決するはずです:

static NSString *SimpleTableIdentifier;

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero
                                   reuseIdentifier:SimpleTableIdentifier] autorelease];
}
0
user1286543