Как скрыть реализацию методов суперкласса в подклассе в ObjC? - PullRequest
0 голосов
/ 22 сентября 2011

Как в ObjC скрыть реализацию методов суперкласса в подклассе?

Я не уверен, что @private справится с задачей, так как она применима только к ivars.

Ответы [ 2 ]

1 голос
/ 22 сентября 2011

Вы правы, директива @private предназначена для переменных экземпляра, а не для методов.Чтобы скрыть реализацию метода, просто опустите его объявление из заголовочного файла.Для подавления предупреждений вы можете использовать расширение категории или класса для объявления метода в файле .m.

Хотя встроенной языковой функции нет, чтобы подкласс не видел метод.Зачем тебе это делать?

0 голосов
/ 22 сентября 2011

В Obj-C нет на самом деле"частных" методов;Так как любое сообщение может быть отправлено любому объекту во время выполнения, нет способа помешать кому-либо отправить сообщение, о котором вы беспокоитесь.Самый простой способ сделать метод суперкласса недоступным - переопределить его в подклассе и ничего не делать:

- (void)someMethodIDontWantToSupport
{
}
...