#iphone
#iPhone
Вопрос:
Я думаю, что у меня концептуальное недопонимание, и я был бы признателен за объяснение.
Внутри класса у меня был один и тот же блок кода, повторяющийся 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
и сбой при этом в консоли (и, кстати, инструкция NSLog не отображается в консоли):
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '*** -[DetailPopUpView dateUp:]: unrecognized selector sent to instance
0x3d33ef0'
Приветствуется любая помощь. Одна вещь, которую я замечаю, это то, что сообщение консоли имеет dateUp: (с двоеточием), как будто ожидается параметр. Итак, хотя самое простое решение — просто вернуть код обратно, повторив его 3 раза, я хотел бы знать, что я делаю не так.
Спасибо.
Ответ №1:
Ваш метод:
- (void)dateUP { ... }
Объявление вашего заголовка включает:
-(void)dateUp;
Возможно, у вас орфографическая ошибка.
Комментарии:
1. Спасибо, Алекс. Это смущает. Совершенно верно. Мне нужно больше сна.
Ответ №2:
Похоже, у вас есть случаи, когда ваши селекторы (имена методов) не совпадают. 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];
}