2012-11-03 56 views
1

我有一個「本地聲明隱藏實例變量」錯誤的「secondsLeft」和「未使用的變量」小時,分鐘和秒。預先感謝您提供的任何幫助。本地聲明隱藏實例變量/未使用的變量警告

.h文件中

#import <Foundation/Foundation.h> 
#import <UIKit/UIKit.h> 
#import "BT_viewController.h" 



@interface BT_screen_blank : BT_viewController { 

    NSTimer *timer; 
    IBOutlet UILabel *myCounterLabel; 
} 

@property (nonatomic, retain) UILabel *myCounterLabel; 
@property (nonatomic) int secondsLeft; 
@property (nonatomic) int minutes; 
@property (nonatomic) int hours; 
@property (nonatomic) int seconds; 

-(void)updateCounter:(NSTimer *)theTimer; 
-(void)countdownTimer; 

@end 

.m文件

@implementation BT_screen_blank 
@synthesize myCounterLabel; 
@synthesize secondsLeft, hours, minutes, seconds; 


//viewDidLoad 
-(void)viewDidLoad{ 
[BT_debugger showIt:self:@"viewDidLoad"]; 
[super viewDidLoad]; 


int hours, minutes, seconds; 
int secondsLeft; 


secondsLeft = 16925; 
[self countdownTimer]; 
} 

- (void)updateCounter:(NSTimer *)theTimer { 
if(secondsLeft > 0){ 
    secondsLeft -- ; 
    hours = secondsLeft/3600; 
    minutes = (secondsLeft % 3600)/60; 
    seconds = (secondsLeft %3600) % 60; 
    myCounterLabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes,   seconds]; 
} 
else{ 
    secondsLeft = 16925; 
} 
} 

回答

1

您必須調用自變量。例如:

self.hours = self.secondsLeft/3600; 

此外,如果你想聲明具有相同名稱稍後變量,可以使用其他名稱,例如:

int hours_tmp; 
1

擺脫從「viewDidLoad」功能,這些行:

int hours, minutes, seconds; 
int secondsLeft; 

這兩條線正是產生你看到的「local declaration hides instance variable」錯誤。

就像edzio說的,在你引用的任何屬性前面使用「self.」。 +1給他!

+0

聲明感謝了很多答覆我的問題的快速響應 - 錯誤信息都沒有了! – user1796454

0

「屬地申報隱藏實例變量」錯誤「secondsLeft」

你在.m文件在此行secondsLeft = 16925;編譯器在局部變量-(void)viewDidLoad方法存儲16925,而不是重新聲明int secondsLeft;

所以的這是在.h文件中

您應該刪除的 int hours, minutes, seconds; int secondsLeft;的重聲明中.m文件中聲明int secondsLeft;。或者,您可以使用其他變量名稱

「未使用的變量」小時,分鐘和秒鐘。 嗯,這只是一個警告,強調你從來沒有使用這些變量int hours, minutes, seconds;這是-(void)viewDidLoad方法

相關問題