Patrząc na the Mac OS X 10.8's version of the Objective-C runtime library source code, zauważyłem, że ma plik NSObject.mm. Jak sama nazwa wskazuje, ma implementację klasy NSObject
, a także wbudowaną pulę autorelease i implementacje count.Czy klasa NSObject jest dziś częścią biblioteki uruchomieniowej Objective-C (zamiast być komponentem Foundation)?
Jednakże wersje biblioteki wykonawczego objc przed jednym Mountain Lion za nie wdrożenie klasę NSObject
(oni nie mieć plik NSObject.mm
, jak widać na Mac OS X 10.7's Objective-C runtime library source code, na przykład).
Czy to naprawdę oznacza, że klasa NSObject
jest teraz częścią biblioteki wykonawczej Objective-C zamiast być komponentem biblioteki Foundation? Jeśli tak, dlaczego? Czy podczas podklasy NSObject
należy unikać pojedynczego połączenia z całą biblioteką Foundation (z -framework Foundation
)?
Miejsce, w którym zaimplementowano NSObject, jest szczegółem implementacji. NSObject został przeniesiony w dół stosu wraz z libobjc, tak aby więcej systemu mogło wykorzystać Cel C. – bbum
Nie sądzę, że 'NSObject' jest (oficjalnie lub w inny sposób) uważany za część Fundacji. [Dokumentacja Apple dla 'NSObject'] (https://developer.apple.com/documentation/objectivec/nsobject?language=objc) teraz wymienia ją jako pochodzącą ze struktury" Objective-C "i nie wspomina o strukturze Foundation . – Cornstalks