Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Local Declaration Hides Instance Variable - tableView Not Synthesized

I have read about using underscores to fix compiler warnings that say "Local declaration hides instance variable," but I have not been able to implement a fix. The solutions I have read about say to use an underscore in my .h file, and the @synthesize part of in my .m file. However, I do not synthesize my tableView. Please see my header file below:

.h File

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

IBOutlet UITableView *tableView;

}

.m File

//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;

}
like image 582
Brandon Avatar asked Nov 29 '25 16:11

Brandon


2 Answers

You have an outlet/property named tableView and your delegate method also contains tableView.

So you need to change either of them. Typically you go to change the argument names of delegate and datasource as

- (NSInteger)tableView:(UITableView *)aTableView 
 numberOfRowsInSection:(NSInteger)section {
like image 139
Anoop Vaidya Avatar answered Dec 02 '25 07:12

Anoop Vaidya


Change :

IBOutlet UITableView *tableView;

To :

IBOutlet UITableView *tableView1;

Make the same required changes in your .m file also. This warning is coming because in below delegate method:

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

There is a reference of UITableView with name tableView and you have given the same name. Scope of this variable is function level where as scope of your variable declare in .h is class level.

like image 28
Rushi Avatar answered Dec 02 '25 05:12

Rushi



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!