#ipad #cocoa #objective_c #ios #iphone
Closed. This question is off-topic. It is not currently
accepting answers.
Want to improve this question? Update the question so
it's on-topic for Stack Overflow на русском.
Closed 4 года назад.
Расскажите общие ошибки, допущенные Objective-C разработчиками, которые вы знаете.
Как мы можем их избежать? В общем, хотелось бы увидеть ошибки связанные с управлением
памятью, анти-паттерны и любые другие ошибки программирования под iOS.
Пожалуйста, обоснуйте свой ответ, а также можно привести примеры.
Начну с одной известной ошибки. Это объявление нового класса без суперкласса, т.е.
предполагая, что он будет иметь суперкласс по умолчанию. Здесь важно помнить, что Objective-c
не поддерживает множественное наследование, НО поддерживает несколько корней. То есть
корень - это не обязательно только класс NSObject. Таким образом, если вы пишете
/* не имеет суперкласса, не делайте этого! */
@interface MyClass
@end
Вы объявляете новый корень, а не подкласс NSObject.
Все подклассы NSObject должны быть прописаны вот так:
/* суперкласс NSObject */
@interface MyClass : NSObject
@end
Ответы
Ответ 1
UIViews и UIViewControllers - разные вещи и не могут быть взаимозаменяемыми.
Не каждый контроллер должен быть UIViewController.
Жизненный цикл UIViewController. В частности вьюшка выгружается (unloaded) в ответ
на memory warnings. Обычно это бывает, когда разработчик использует вьюшку для хранения
данных. Результат - потеря данных.
Ответ 2
Эта ошибка относится не только для новичков Objective-C (но и для Java, например).
То есть проблема общего понимания того, что пишешь.
Сравнение через ==
str == @"Test"
Вместо
[str isEqualToString:@"Test"]
Ответ 3
Самая типичная ошибка - нахвататься верхушек, минуя стадию получения полноценных
базовых знаний по языку и его обвязке. Остальное всего лишь следствие.