Типичные ошибки программирования на Objective-C

Рейтинг: 6Ответов: 2Опубликовано: 18.01.2011

Расскажите общие ошибки, допущенные Objective-C разработчиками, которые вы знаете. Как мы можем их избежать? В общем, хотелось бы увидеть ошибки связанные с управлением памятью, анти-паттерны и любые другие ошибки программирования под iOS.

Пожалуйста, обоснуйте свой ответ, а также можно привести примеры.

Начну с одной известной ошибки. Это объявление нового класса без суперкласса, т.е. предполагая, что он будет иметь суперкласс по умолчанию. Здесь важно помнить, что Objective-c не поддерживает множественное наследование, НО поддерживает несколько корней. То есть корень - это не обязательно только класс NSObject. Таким образом, если вы пишете

/* не имеет суперкласса, не делайте этого! */
@interface MyClass
@end

Вы объявляете новый корень, а не подкласс NSObject.

Все подклассы NSObject должны быть прописаны вот так:

/* суперкласс NSObject */
@interface MyClass : NSObject
@end

Ответы

▲ 4Принят
  1. UIViews и UIViewControllers - разные вещи и не могут быть взаимозаменяемыми.
  2. Не каждый контроллер должен быть UIViewController.
  3. Жизненный цикл UIViewController. В частности вьюшка выгружается (unloaded) в ответ на memory warnings. Обычно это бывает, когда разработчик использует вьюшку для хранения данных. Результат - потеря данных.
▲ 3

Эта ошибка относится не только для новичков Objective-C (но и для Java, например). То есть проблема общего понимания того, что пишешь.

Сравнение через ==

str == @"Test"

Вместо

[str isEqualToString:@"Test"]