2

多くの人がこれを尋ねることは知っていますが、すべての答えは特定のアプリであるため、自分のアプリでどのように機能するかわかりません.

        tableData = [NSArray arrayWithObjects:@"Chocolate Brownie", @"Mushroom Risotto", nil];
    }

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

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *simpleTableIdentifier = @"SimpleTableItem";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

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

        cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
        return cell;` 
    }
4

3 に答える 3

7

その理由は uttableData変数が保持されておらず、ファクトリ メソッドを介して割り当てた変数が既に自動解放されているためです。

.hファイルで、プロパティを保持し、この変数を自己で使用します。ウルコードで。

@property(nonatomic,retain) NSArray *tableData;

メートルで、

@synthesize tableData;

次に、次のように使用します。

self.tableData = [NSArray arrayWithObjects:@"Chocolate Brownie", @"Mushroom Risotto",      nil];

これで、Tabledataが保持されているため、エラーが発生しません。

deallocARC を使用していない場合は、忘れずにリリースしてください。

于 2012-06-24T08:22:59.220 に答える
4

NSArray をプロパティとして宣言し、合成する必要があります。あなたのクラス定義で:

@property (retain, nonatomic) NSArray *tableData;

そして実装では:

@synthetize tableData = _tableData;
于 2012-06-24T08:19:39.220 に答える
3

さて、これは簡単な修正です。宣言されていないため、「tableData」を参照するすべての行でエラーが発生しています。つまり、アプリには「tableData」が何であるかが通知されませんでした。

.h ファイルで「tableData」を宣言できます。次のようになります...

@interface yourClassName : UITableViewController 
{
    NSArray *tableData;
}

編集:この関数内からのみこの配列を呼び出す場合は、@grasGendarmeの回答を使用してください。コントローラー全体で使用する場合は、この回答を使用してください。

EDIT 2:更新された質問に関しては、エラーが発生している行でこれを確認してください。

ここに画像の説明を入力

この青い矢印は、コードのこの行にブレーク ポイントを設定したことを示しています。エラーを右クリックして、ブレークポイントの削除を選択できます。

于 2012-06-24T08:20:01.910 に答える