Ошибка XCode, невозможно увидеть разницу - PullRequest
2 голосов
/ 04 октября 2010

Хорошо, я читаю книгу Аарона Хиллегаса по программированию какао, в главе о перетаскивании.Я следовал вместе с одним из уроков, и я обычно меняю имена переменных, так как я нахожу, что это заставляет меня быть немного более заинтересованным и дает мне лучшее понимание.Я начал получать эту ошибку, хотя:

2010-10-04 00:38:06.699 TypingTutor[421:a0f] -[BigLetterView dragImage:at:offset:event:pasteboard:source:slideback:]: unrecognized selector sent to instance 0x100424390

Теперь я подумал, что это потому, что перепутал имя какой-то переменной, поэтому я вернулся и скопировал переменные прямо из книги и все еще получил ошибку.XCode говорил, что следующая функция может не получить ответ.Ну, независимо от того, что я не мог понять это на всю жизнь, поэтому я отказался от функции и переделал ее.Что сводит меня с ума, так это то, что это сработало во второй раз, но я заметил разницу в том, что XCode выделил синтаксис функции, которая работает, а не ту, которая не работает.Я не вижу никакой физической разницы, и я озадачен тем, почему один отличается от другого.Оба были набраны на клавиатуре Mac, поэтому я не вижу, чтобы это был какой-то скрытый символ из-за кодировки, но да, я просто надеюсь, что упускаю что-то чрезвычайно очевидное, потому что сейчас 1 час ночи ... кто-нибудь когда-либо запускалв это раньше?

Методы, скопированные непосредственно из файла .m ...

Этот работает

 [self dragImage:anImage
     at:p
    offset:NSMakeSize(0,0)
     event:mouseDownEvent
   pasteboard:pb
    source:self
slideBack:YES];

Этот не

 [self dragImage:anImage
     at:p
    offset:NSMakeSize(0,0)
     event:mouseDownEvent
   pasteboard:pb
    source:self
    slideback:YES];

1 Ответ

6 голосов
/ 04 октября 2010

Objective-C чувствителен к регистру, поэтому имена методов с разными регистрами в их буквах считаются разными методами.Тот, который работает, «слайдбэк» пишется slideBack с большой буквы B, что, вероятно, вы и называете.Тот, который не имеет строчной буквы «b» и написан slideback.В Objective-C это разные методы.Определение, очевидно, написано прописными буквами «B», поэтому один работает, а другой нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...