Точечная запись против квадратных скобок и приведение в Objective-C

Что из следующего является лучшей практикой в ​​Objective-C?

UITableView* view = (UITableView*) [self view];
[view setSeparatorColor:[UIColor blackColor]];
[view release];

против

((UITableView*) self.view).separatorColor = [UIColor blackColor];

Или есть лучший способ написать это? self.view это UIView*,

Я спрашиваю оба, потому что у меня странно выглядящий актерский состав (может быть, есть лучший способ?) И из-за следующего текста из официальной документации, который намекает, что это больше, чем просто вопрос стиля или личных предпочтений:

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

3 ответа

Решение

Ну.... точечная запись в конце сводится к квадратным скобкам, но это зависит от личных предпочтений. Лично я избегаю точечных обозначений, если я не устанавливаю / не обращаюсь к скалярному типу, например, слишком легко взглянуть на следующее...

view.step = 2.0;

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

[view setStep:2.0];

Но опять же личные предпочтения, я думаю.

2 вещи

  1. Вы не спрашивали об этом, но - я любил эти "Одни строки" в начале, но через некоторое время, когда вы возвращаетесь к коду, он становится менее читабельным.

  2. точка кажется мне более читаемой

Я бы предпочел это -

    UITableView* view = (UITableView*)self.view;
    view.setSeparatorColor=[UIColor blackColor];

Но, в конце концов, это вопрос ваших собственных предпочтений.

Вы также можете привести в скобки и сохранить себе одну или две строки, используя этот синтаксис:

[(UITableView*) self.view setSeparatorColor:[UIColor redColor]];
Другие вопросы по тегам