Как в Java:
Заключительный класс не может быть разделен на подклассы. Это сделано по причинам безопасности и эффективности. Соответственно, многие классы библиотеки стандарта Java являются окончательными, например, java.lang. Система и java.lang. Строка. Все методы в заключительном классе являются неявно последними.
Как я могу достигнуть этого поведения в цели-c?
Вы не можете. Эффективность здесь не важна. Если вас так беспокоит безопасность, не используйте objective-c. Всегда найдется способ обойти любые меры, которые вы предпримете.
Как уже неоднократно говорилось, вы не можете.
Однако, если вы создаете библиотеку (в любом случае, это единственный случай, когда я вижу, что это актуально), вы можете предпринять несколько шагов. Ну, действительно, один.
Напишите в документации класса, что «Этот класс не предназначен для создания подклассов». (ссылка NSIndexSet
) или « Не отменять этот метод. » (ссылка + [NSApplication sharedApplication]
.
В качестве объяснения, Стоит отметить, что (в значительной степени) все, что происходит в Obj-C и что отделяет его от C, происходит во время выполнения, а среда выполнения, так сказать, «прямо здесь». Любой фрагмент кода может проверять, видоизменять или извратить среду выполнения на досуге, делая Obj-C ужасно мощным языком, особенно в том, что касается его «метаязыковой» структуры.
В target-c нет окончательного эквивалента. Есть те же шаблоны, которые могут быть хорошей альтернативой, они дадут вам лучшее разделение, но ни производительность, ни безопасность: