В Objective-C есть пара вещей, которые меня смущают:
Во-первых, в руководстве target-c совершенно ясно, что каждый класс должен вызывать метод init своего подкласса. Немного неясно, должен ли класс, который наследуется непосредственно от NSObject, вызывать свой метод init
. Это тот случай? И если так, то почему?
Во-вторых, в разделе о NSObject есть это предупреждение:
Класс, который не должен наследовать какое-либо специальное поведение от другого класса, должен, тем не менее, быть подклассом класса NSObject. Экземпляры класса должны по крайней мере иметь способность вести себя как объекты Objective-C во время выполнения. Наследовать эту способность от класса NSObject намного проще и гораздо надежнее, чем заново изобретать ее в новом определении класса.
Значит ли это, что мне нужно указать, что все объекты явно наследуются от NSObject? Или это как Java / Python / C #, где все классы являются подтипами NSObject? Если нет, есть ли причина создавать корневой класс, отличный от NSObject?