Как читать методы Objective C - PullRequest
0 голосов
/ 03 августа 2010

Я думаю, что самая большая проблема, с которой я сталкиваюсь в понимании программирования, это понимание того, что делает тот или иной метод.Например,

- (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex

Когда я смотрю на описанный выше метод, я знаю, что он возвращает логическое значение и что метод получает следующее.

  1. NSTableView
  2. NSTableColumn
  3. NSInteger

Однако я не понимаю, что мне нужно предоставить, чтобы правильно использовать метод.Мне просто вернуть логическое значение?

Ответы [ 3 ]

1 голос
/ 03 августа 2010

Все сводится к поговорке: код говорит вам, как, комментарии говорят вам, почему.

Если вы пишете метод, вам нужно знать, почему вы хотите метод, и документировать его соответствующим образом, a.k.a. комментарии. Если вы переопределяете метод, то вы надеетесь, что производитель метода документирует, что делает метод.

Если вы углубляетесь в разработку iPhone без некоторого опыта программирования, вам следует хотя бы прочитать Введение в язык программирования Objective-C . Если вы хотите узнать, что конкретный метод делает в вашем коде, вы всегда можете щелкнуть правой кнопкой мыши имя метода и выбрать «Найти текст в документации», чтобы узнать больше об этом.

1 голос
/ 03 августа 2010

Этот метод будет вызываться таблицей (или чем-то еще) вашего делегата (класс, в котором вы реализуете этот метод), когда таблице необходимо знать, можно ли редактировать определенную строку и столбец.Вам просто нужно вернуть YES или NO, чтобы указать, хотите ли вы разрешить его редактирование.

Это пример реализации:

-(BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {
    return NO;
}

Это будет означать, что таблица можетникогда не будет редактироваться.

Более сложная реализация, подобная этой, позволит редактировать только первую строку:

-(BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {
    if (rowIndex == 0)
        return YES;
    else 
        return NO;
    //This can be shortened to:
    //return rowIndex == 0;
}
0 голосов
/ 03 августа 2010

Имя метода tableView: shouldEditTableColumn: row: должно дать вам подсказку, что речь идет о редактировании строк и столбцов в табличном представлении. Вы, вероятно, можете догадаться, что, так как он возвращает логическое значение, он вызывается для определения, что табличное представление должно редактировать предоставленную строку предоставленного столбца. Однако, это было бы только предположением, поэтому в этот момент (если бы я не использовал этот метод только вчера и, таким образом, точно знал, для чего он нужен), я бы начал поискать его в Google (или использовал бы поиск по Xcode, если бы у меня был доступ к Xcode).

Полезный совет для документации Googling Cocoa - выполнять поиск только на сайте: developer.apple.com, поэтому мы попробуем site: developer.apple.com tableView: shouldEditTableColumn: row: . В этом случае лучшим хитом является NSTableViewDelegate , который нам нужен.

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