Основной синтаксис Objective-C, обычно используемый в методах инициализации

Возможный дубликат:
двойные скобки в примере кода

Часто метод init в классе Objective-C будет иметь следующую строку:

if ((self = [super init])) { ...

Мне просто интересно, нужны ли дополнительные скобки. Является ли следующая строка эквивалентной?

if (self = [super init]) { ...

Изменить: Это действительно дубликат двойных скобок в примере кода


person SundayMonday    schedule 28.09.2012    source источник


Ответы (1)


Они не нужны, но с помощью (( и )) говорят "да, я имею в виду присваивание, а не сравнение".

На самом деле clang предупредит вас об использовании присваивания в условии if и предложит двойные скобки для однозначности.

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

person nielsbot    schedule 28.09.2012
comment
Это необходимо, если вы компилируете с параметром -Werror, как это делают многие. - person Chuck; 28.09.2012