Время выполнения Objective C

Ссылка Времени выполнения Objective C говорит:

“Удержанный от использования” ниже средств, “удержанных от использования в версии 10.5 Mac OS X для 32-битного кода и запрещенных для 64-битного кода”.

и я хотел бы использовать class_setSuperclass в Max версия 10.5 OS X даже при том, что я все еще могу сделать это, компилятор дает предупреждение сообщения мне его устаревшее, но это все еще создает, и Пакет все еще применим.

Мой вопрос - то, что было бы эквивалентом в Max OS X 10.5?

6
задан Brian Campbell 8 January 2010 в 23:21
поделиться

2 ответа

Наугад его использование, вероятно, не лучшая идея. Я знаю, что с переходом к 64-битной версии некоторые вещи во время выполнения изменились и не получили замены.

Документы даже прямо говорят не трогать и не делают исключения из этого.

Однако вы можете использовать class_addMethod , чтобы добавить функциональность к заданному ранее существовавшему классу. Однако это также можно сделать с помощью категорий.

Вы можете использовать class_replaceMethod , чтобы переопределить метод, другой возможный метод - использовать категорию (или class_addMethod ) для добавления метода замены. Затем, используя method_exchangeImplementations , вы можете поменять местами их так, чтобы оригинал был доступен для вызова.

В целом, хотя по большей части это своего рода мрачное вуду, и если вам не комфортно и вы не хотите много тестировать, я бы поискал альтернативный дизайн.

5
ответ дан 17 December 2019 в 02:29
поделиться

Не может быть прямой эквивалент.

Я знаю каждый раз, когда я играл с иерархией класса во время выполнения, я был сожжен. Вы должны быть в состоянии достичь такими же результатами, хотя и более добросовестно через делегацию, и я думаю, что это то, что они хотят.

1
ответ дан 17 December 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: