Wie in Java:
Eine finale -Klasse kann nicht unterklassifiziert werden. Dies geschieht aus Gründen der Sicherheit und Effizienz . Dementsprechend sind viele Klassen der Java-Standardbibliotheken endgültig, zum Beispiel java.lang.System und java.lang.String. Alle Methoden in einer finalen Klasse sind implizit endgültig.
Wie kann ich dieses Verhalten in objective-c erreichen?
Sie können nicht. Effizienz kommt nicht dazu. Wenn Sie sich so um Sicherheit kümmern, verwenden Sie nicht objective-c. Es wird immer eine Möglichkeit geben, alle Maßnahmen, die Sie ergreifen, zu umgehen.
Wie schon mehrmals gesagt wurde, können Sie nicht.
Wenn Sie jedoch eine Bibliothek erstellen (was der einzige Fall ist, in dem ich dies für relevant halten könnte), gibt es ein paar Schritte, die Sie ausführen können. Naja, wirklich.
Schreiben Sie in der Dokumentation der Klasse Folgendes: "Diese Klasse ist nicht für Unterklassen vorgesehen." (ref. NSIndexSet
) oder " Überschreibe diese Methode nicht. " (ref. +[NSApplication sharedApplication]
.
Als Erklärung sei darauf hingewiesen, dass (fast) alles, was in Obj-C passiert und das es von C trennt, zur Laufzeit geschieht und die Laufzeit sozusagen "Right There" ist. Jedes Stück Code kann die Laufzeit in ihrer Freizeit inspizieren, mutieren oder pervertieren, was Obj-C zu einer furchtbar mächtigen Sprache macht; vor allem in Bezug auf seine "Meta-Sprache" Struktur.
Es gibt kein endgültiges Äquivalent in Ziel-c. Es gibt dieselben Muster, die eine gute Alternative sein könnten, sie geben Ihnen bessere Trennung, aber weder Leistung noch Sicherheit:
Tags und Links objective-c iphone cocoa cocoa-touch