2013-03-02 95 views
2

我已阅读关于使用下划线来修复编译器警告,说“本地声明隐藏实例变量”,但我一直无法实现修复。我已阅读的解决方案说,在我的.h文件中使用下划线,并在我的.m文件中使用@synthesize部分。但是,我不合成我的tableView。请参考下面我的头文件:本地声明隐藏实例变量 - 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; 

} 

回答

3

变化:

IBOutlet UITableView *tableView; 

要:

IBOutlet UITableView *tableView1; 

也对.m文件进行相同的必需更改。这个警告是因为即将在下面的委托方法:

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

还有就是UITableView名称为tableView参考,你给了相同的名称。这个变量的范围是函数级别,因为你的变量的范围在.h中声明是类级别。

+1

改变出口名称可能会导致你遇到了某种麻烦,就好像你是从其他一些类别中引用它一样。 – 2013-03-02 06:56:24

6

你有一个名为tableView的outlet/property,你的委托方法也包含tableView。

所以你需要改变其中任何一个。通常你去改变代理和数据源的参数名称为

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

不要使用相同的名称:IBOutlet UITableView * tableView;使用tableview或table_View

0

我也花了很多时间在这个问题上。最后我可以解决这个问题。 事情是我们应该照顾我们创造的网点。如果你改变了网点名称,那么你必须在改变后正确连接它们。在我的情况下,经过很多努力,我可以完成这个问题,希望它可以帮助其他人...... 例如,如果你有一个名为tableView的outlet/property和你的委托方法还包含tableView。

所以你需要改变其中任何一个。通常你去改变委托和数据源的参数名称作为 变化:

IBOutlet UITableView *tableView; 

要:

IBOutlet UITableView *tableView1; 

欲了解更多信息,请访问此链接 - >Local Declaration Hides Instance Variable - tableView Not Synthesized

相关问题