如何在“效率”目的的方法中移动代码块?
我想我有一个概念误解,并希望得到解释。如何在“效率”目的的方法中移动代码块?
在一个类中,我有代码重复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次,我想知道我做错了什么。
谢谢。
你的方法是:
- (void)dateUP { ... }
你的头部声明包括:
-(void)dateUp;
你可能有拼写错误。
感谢亚历克斯。这很尴尬。完全正确。我需要更多的睡眠。 – 2010-03-10 03:07:03
适合我们所有人! – 2010-03-10 03:11:50
承认太多次了! – 2010-03-10 10:35:33
看起来像你有你的选择器(方法名称)不匹配的情况。 dateUP
是dateUp
不同的是从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];
}
+1识趣:) – 2010-03-10 10:39:19