Страницы

Поиск по вопросам

воскресенье, 15 декабря 2019 г.

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

#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



Самая типичная ошибка - нахвататься верхушек, минуя стадию получения полноценных базовых знаний по языку и его обвязке. Остальное всего лишь следствие.

Комментариев нет:

Отправить комментарий