Sobes.tech
Junior

Fale sobre a cadeia de herança de classes em Objective-C ou Swift.

sobes.tech IA

Resposta da IA

Em Objective-C, cada classe herda de NSObject (ou de uma sua subclasse), que é a classe raiz da maioria das classes orientadas a objetos e não-strings no framework Foundation. NSObject fornece funcionalidades básicas, como gestão de memória, descrição de objetos, testes de igualdade e introspeção.

// Em Objective-C, a declaração de uma classe implica automaticamente herança de NSObject, salvo indicação em contrário.
@interface MyClass : NSObject // Herança explícita de NSObject.
// ...
@end

// Se não houver herança explícita, herda por padrão de NSObject.
@interface AnotherClass
// ...
@end

Em Swift, as classes não têm uma classe raiz única como NSObject em Objective-C. Uma classe pode herdar de outra, formando uma hierarquia. Se uma classe não herdar explicitamente de outra, ela é a classe raiz na sua própria hierarquia. A compatibilidade com Objective-C e frameworks Cocoa é garantida por classes bridged entre Swift e Objective-C, como as classes do Foundation.

// Classe sem herança explícita - raiz na sua hierarquia.
class MySwiftClass {
    // ...
}

// Classe que herda de outra classe Swift.
class AnotherSwiftClass: MySwiftClass {
    // ...
}

// Classe Swift que herda de uma classe Objective-C (por exemplo, do Foundation).
import Foundation

class MyViewController: UIViewController { // UIViewController herda de UIResponder, que herda de NSObject
    // ...
}

A cadeia de herança representa uma sequência de classes desde a filha até a mãe, até a classe raiz (seja NSObject em Objective-C ou a classe raiz na hierarquia Swift). Isso permite às classes filhas usar e sobrescrever propriedades e métodos das classes parentais.