Ispričajte o lancu nasleđivanja klasa u Objective-C ili Swift.
sobes.tech АИ
Одговор од АИ
U Objective-C, svaka klasa nasleđuje od NSObject (ili njegove podklase), koji je korenska klasa većine objektnorijentisanih i ne-string klasa u okviru framework-a Foundation. NSObject pruža osnovne funkcionalnosti kao što su upravljanje memorijom, opis objekata, testiranje na jednakost i introspekcija.
// U Objective-C, deklaracija klase automatski podrazumeva nasleđivanje od `NSObject`, osim ako nije drugačije naznačeno.
@interface MyClass : NSObject // Eksplicitno nasleđivanje od `NSObject`.
// ...
@end
// Ako nema eksplicitnog nasleđivanja, podrazumevano se nasleđuje od `NSObject`.
@interface AnotherClass
// ...
@end
U Swift-u, klase nemaju jedinstvenu korensku klasu kao NSObject u Objective-C. Klasa može nasleđivati od druge klase, formirajući hijerarhiju. Ako klasa ne nasleđuje eksplicitno od druge, ona je korenska klasa u sopstvenoj hijerarhiji. Kompatibilnost sa Objective-C i Cocoa okvirima obezbeđena je klasama koje su bridgovane (bridged) između Swift i Objective-C, kao što su klase iz Foundation.
// Klasa bez eksplicitnog nasleđivanja - korenska u svojoj hijerarhiji.
class MySwiftClass {
// ...
}
// Klasa koja nasleđuje od druge Swift klase.
class AnotherSwiftClass: MySwiftClass {
// ...
}
// Swift klasa koja nasleđuje od Objective-C klase (npr. iz Foundation).
import Foundation
class MyViewController: UIViewController { // UIViewController nasleđuje od UIResponder, koji nasleđuje od NSObject
// ...
}
Lanac nasleđivanja predstavlja niz klasa od deteta do roditelja, do korenske klase (bilo NSObject u Objective-C ili korenske klase u Swift hijerarhiji). Ovo omogućava detetovim klasama da koriste i prepisuju svojstva i metode roditeljskih klasa.