2010-03-10 144 views
1

我想我有一個概念誤解,並希望得到解釋。如何在「效率」目的的方法中移動代碼塊?

在一個類中,我有代碼重複3次(和完美的工作),但要儘量使事情變得更加「高效」我把它從同一塊與類內進行的方法如下:

- (void)dateUP { 
NSLog(@"dateUp"); 
[UIView beginAnimations:@"datePicker" context:nil]; 
[UIView setAnimationDuration:0.5]; 

datePicker.transform = CGAffineTransformMakeTranslation(0,-310); 
[UIView commitAnimations]; 
} 

,然後在代碼原來是,我把:

[self dateUp]; 

,我把我的.h如下:

-(void)dateUp; 

我建立並得到這樣的警告:在控制檯

Line Location DetailPopUpView.m:165: warning: method definition for '-dateUp' 
not found 

和崩潰與此(和BTW,對的NSLog語句不顯示在控制檯):

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '*** -[DetailPopUpView dateUp:]: unrecognized selector sent to instance 
0x3d33ef0' 

任何幫助表示讚賞。我注意到的一件事是,控制檯消息具有dateUp :(帶有冒號),就好像參數是預期的一樣。所以,最簡單的解決方案就是將代碼放回原處,重複3次,我想知道我做錯了什麼。

謝謝。

+0

+1識趣:) – 2010-03-10 10:39:19

回答

4

你的方法是:

- (void)dateUP { ... } 

你的頭部聲明包括:

-(void)dateUp; 

你可能有拼寫錯誤。

+0

感謝亞歷克斯。這很尷尬。完全正確。我需要更多的睡眠。 – 2010-03-10 03:07:03

+0

適合我們所有人! – 2010-03-10 03:11:50

+0

承認太多次了! – 2010-03-10 10:35:33

2

看起來像你有你的選擇器(方法名稱)不匹配的情況。 dateUPdateUp不同的是從dateUp:

太大區別這應該很好地工作:

- (void)dateUp 
{ 
    NSLog(@"dateUp"); 
    [UIView beginAnimations:@"datePicker" context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    datePicker.transform = CGAffineTransformMakeTranslation(0,-310); 
    [UIView commitAnimations]; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self dateUp]; 
}