Поскольку объектно-ориентированные языки имеют концепцию наследования, в любой иерархии наследования есть корневой класс. В Java родительский класс по умолчанию (если не указан) - _ 1_, тогда как в Objective-C, если вы явно не объявляете родительский класс, вы его не получите. По сути, ваш класс сам становится корневым. Это распространенная ошибка среди новичков в Objective-C, поскольку в таких случаях вы обычно хотите наследовать от NSObject.
Хотя это часто бывает проблематично и сбивает с толку, на самом деле это дает некоторую гибкость, поскольку вы можете определять свои собственные иерархии классов, которые действуют совершенно иначе, чем NSObject. (Java вообще не позволяет вам этого делать.) С другой стороны, если вы не знаете, что делаете, таким образом легко попасть в неприятности. К счастью, компилятор выдаст предупреждения, если вы вызовете метод, не определенный классом без объявленного родительского класса, например те, которые вы обычно ожидаете унаследовать от NSObject.
Что касается «использования» NSObject, ознакомьтесь с документацией NSObject class и протокол NSObject. Они определяют общие методы, используемые для выделения объектов, управления памятью, сравнения, хеширования, печати описаний, проверки принадлежности к классам, запроса, отвечают ли объекты на селектор и т. Д. В принципе, NSObject «хорош для» обеспечения основных функций объектов Objective-C. бесплатно.
person
Quinn Taylor
schedule
19.10.2009