Точечная нотация или квадратные скобки и литье в Objective-C
Какое из следующего является наилучшей практикой в Objective-C?
UITableView* view = (UITableView*) [self view];
[view setSeparatorColor:[UIColor blackColor]];
[view release];
против.
((UITableView*) self.view).separatorColor = [UIColor blackColor];
Или есть лучший способ написать это? self.view
является UIView*
.
Я спрашиваю обоих, потому что у меня странный вид (возможно, есть лучший способ?) и из-за следующего текста из официальной документации, в котором намекает, что это больше, чем просто вопрос стиля или личных предпочтений:
Еще одно преимущество заключается в том, что компилятор может сигнализировать об ошибке, когда обнаруживает попытку записи в объявленное свойство только для чтения. Если вместо этого вы используете синтаксис квадратной скобки для доступа к переменным, компилятор в лучшем случае генерирует только необъявленный метод, предупреждающий о том, что вы вызывали несуществующий метод setter, а код не работает во время выполнения.
Ответы
Ответ 1
Ну... Точечная нотация в конце концов сводится к квадратным скобкам, но это зависит от личных предпочтений. Я лично избегаю точечной нотации, если я не устанавливаю/не прибегая к скалярному типу, слишком просто взглянуть на следующее, например...
view.step = 2.0;
... и не знаю, где шаг является скалярным свойством или имеет метод setter и т.д. Я предпочитаю быть явным и использовать...
[view setStep:2.0];
Но опять-таки личное предпочтение, я думаю.
Ответ 2
2 вещи
-
Вы не спрашивали об этом, но... Раньше я любил этих "Одних строк" в начале, но через некоторое время, когда вы вернетесь к коду, он становится менее читаемым.
-
точка кажется более читаемой мне
Я бы предпочел, чтобы -
UITableView* view = (UITableView*)self.view;
view.setSeparatorColor=[UIColor blackColor];
Но в конце концов это вопрос ваших собственных предпочтений.
Ответ 3
Вы также можете включить в скобку и сохранить строку или две, используя этот синтаксис:
[(UITableView*) self.view setSeparatorColor:[UIColor redColor]];