Как мне переместить блок кода в метод для целей «эффективности»? - PullRequest
1 голос
/ 10 марта 2010

Я думаю, что у меня есть концептуальное недоразумение, и я был бы признателен за объяснение.

Внутри класса у меня был один и тот же блок кода, повторяющийся 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 раза, я бы хотел знать, что я делаю неправильно.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 10 марта 2010

Ваш метод:

- (void)dateUP { ... }

Ваша декларация заголовка включает в себя:

-(void)dateUp;

У вас может быть орфографическая ошибка.

2 голосов
/ 10 марта 2010

Похоже, у вас есть случаи, когда ваши селекторы (имена методов) не совпадают. 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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...