Sobes.tech
Junior

Objective-C же Swiftте класстар мурасамалы цепочкасы жөнүндө айтып бериңиз.

sobes.tech AI

AIден жооп

Objective-Cде, ар бир класс NSObject (же анын подклассу) тарабынан мурас алат, ал көбүнчө объектке багытталган жана строка эмес классылар үчүн Foundation чөйрөсүндө негизги класс болуп саналат. NSObject негизги функцияларды камсыз кылат, мисалы, эс тутумду башкаруу, объекттердин сүрөттөмөсү, бирдейликти текшерүү жана интроспекция.

// Objective-Cде, класс декларациясы автоматтык түрдө `NSObject`-ден мурас алуу деп эсептелет, эгер башкача көрсөтүлбөсө.
@interface MyClass : NSObject // Ачык мурас `NSObject`.
// ...
@end

// Эгер ачык мурас көрсөтүлбөсө, ал автоматтык түрдө `NSObject`-ден мурас алат.
@interface AnotherClass
// ...
@end

Swiftте, класстарда NSObject сыяктуу бирдиктүү түпкү класс жок. Класс башка класстан мурас алса болот жана бул иерархия түзөт. Эгер класс ачык түрдө башка класстан мурас албаса, ал өзүнүн иерархиясында түпкү класс болуп саналат. Objective-C жана Cocoa чөйрөлөрү менен шайкештик bridged (көпүрөлөнгөн) класстар аркылуу камсыздалган, мисалы, Foundationдан келген класстар.

// Ачык мурассыз класс - өзүнүн иерархиясында түпкү.
class MySwiftClass {
    // ...
}

// Башка Swift класстан мурас алган класс.
class AnotherSwiftClass: MySwiftClass {
    // ...
}

// Swift классы, Objective-C класынан мурас алат (мисалы, Foundationдан).
import Foundation

class MyViewController: UIViewController { // UIViewController UIResponderдан мурас алат, ал да NSObjectдан
    // ...
}

Мурус чынжыры — бул баладан атага чейинки класстардын тизмеги, түпкү класка чейин (Objective-Cде NSObject, же Swift иерархиясында түпкү класс). Бул балалуу класстарга ата класстардын өзгөчөлүктөрүн жана ыкмаларын колдонууга жана кайра аныктоого мүмкүндүк берет.