Нужно, чтобы программист iPhone оценивал каждый шаг и каждый указатель == ноль? - PullRequest
2 голосов
/ 03 июля 2011

например:

NSString *myString = [[NSString alloc] init];
if (nil == myString) {
    return;
}

Нужно ли мне это делать? Спасибо!

Ответы [ 3 ]

4 голосов
/ 03 июля 2011

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

Кроме того, оператор if можно сократить до:

if (! myString) {
    return;
}

... что эквивалентно, но не менее излишне. Проверка на nil может быть полезна, но обычно не выполняется сразу после создания объекта. Вместо этого типичный случай состоит в том, чтобы сделать это, чтобы гарантировать, что объект не перевыпущен, например, используя образец как:

if (myObj) {
    [myObj release];
    myObj = nil;
}

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

1 голос
/ 03 июля 2011

Честно говоря, большая часть кода приложений для iPhone, созданного в наши дни, предполагает, что в обычной работе никогда не возникает условие отсутствия кучи (единственная логическая причина сбоя такой простой операции создания экземпляра).Только при создании больших объектов (например, изображений) можно выполнить одну проверку на неудачу выделения.

Конечно, процедуры инициализации могут не выполняться по целому ряду причин, поэтому может потребоваться проверка на ноль после сложной операции создания экземпляра (в зависимости отна тип объекта).(И помните, что многие другие методы некоторых объектов также могут возвращать nil при некоторых обстоятельствах, поэтому вам необходимо прочитать спецификации и код соответственно.)

1 голос
/ 03 июля 2011

Objective-C позволяет вызывать нулевые указатели, что отличает язык от многих других и позволяет пропустить некоторые проверки.Конечно, все же имеет смысл проверять == nil в некоторых конкретных случаях, однако вам не нужно проверять каждый шаг в коде.Взгляните на документацию и образцы Apple и попробуйте следовать их стилю.

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