2

アンダースコアを使用して、「ローカル宣言がインスタンス変数を非表示にする」というコンパイラの警告を修正することについて読んだことがありますが、修正を実装できていません。私が読んだ解決策は、.h ファイルでアンダースコアを使用し、.m ファイルで @synthesize 部分を使用することです。ただし、tableView を合成しません。以下のヘッダーファイルを参照してください。

.h ファイル

@interface ListViewController : GAITrackedViewController <UISearchDisplayDelegate, 
UISearchBarDelegate, UITableViewDataSource, UITableViewDelegate> {

IBOutlet UITableView *tableView;

}

.m ファイル

//SYNTHESIZE
@synthesize listItems, filteredListItems, savedSearchTerm, savedScopeButtonIndex, 
searchWasActive, mapView, loadingImageView, loadingActivity;



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

 //FIRST WARNING for tableView HERE

if (tableView == self.searchDisplayController.searchResultsTableView){
    return [self.filteredListItems count];
    }
    else{
        return [self.listItems count];
    }
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    //SECOND WARNING for tableView HERE

    [tableView setRowHeight: 60.00];
    return 1;

}
4

4 に答える 4

6

tableView という名前のアウトレット/プロパティがあり、デリゲート メソッドにも tableView が含まれています。

したがって、どちらかを変更する必要があります。通常、デリゲートとデータソースの引数名を次のように変更します。

- (NSInteger)tableView:(UITableView *)aTableView 
 numberOfRowsInSection:(NSInteger)section {
于 2013-03-02T06:53:45.503 に答える
3

変化 :

IBOutlet UITableView *tableView;

に :

IBOutlet UITableView *tableView1;

.m ファイルにも同じ必要な変更を加えます。以下のデリゲート メソッドでは、この警告が表示されます。

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

UITableViewwith nameの参照がありtableView、同じ名前を付けています。この変数のスコープは関数レベルであり、.h で宣言する変数のスコープはクラス レベルです。

于 2013-03-02T06:51:34.203 に答える
0

同じ名前を使用しないでください: IBOutlet UITableView *tableView; tableview または table_View を使用する

于 2013-08-12T11:24:58.063 に答える