Ссылка Времени выполнения Objective C говорит:
“Удержанный от использования” ниже средств, “удержанных от использования в версии 10.5 Mac OS X для 32-битного кода и запрещенных для 64-битного кода”.
и я хотел бы использовать class_setSuperclass в Max версия 10.5 OS X даже при том, что я все еще могу сделать это, компилятор дает предупреждение сообщения мне его устаревшее, но это все еще создает, и Пакет все еще применим.
Мой вопрос - то, что было бы эквивалентом в Max OS X 10.5?
Наугад его использование, вероятно, не лучшая идея. Я знаю, что с переходом к 64-битной версии некоторые вещи во время выполнения изменились и не получили замены.
Документы даже прямо говорят не трогать и не делают исключения из этого.
Однако вы можете использовать class_addMethod
, чтобы добавить функциональность к заданному ранее существовавшему классу. Однако это также можно сделать с помощью категорий.
Вы можете использовать class_replaceMethod
, чтобы переопределить метод, другой возможный метод - использовать категорию (или class_addMethod
) для добавления метода замены. Затем, используя method_exchangeImplementations
, вы можете поменять местами их так, чтобы оригинал был доступен для вызова.
В целом, хотя по большей части это своего рода мрачное вуду, и если вам не комфортно и вы не хотите много тестировать, я бы поискал альтернативный дизайн.
Не может быть прямой эквивалент.
Я знаю каждый раз, когда я играл с иерархией класса во время выполнения, я был сожжен. Вы должны быть в состоянии достичь такими же результатами, хотя и более добросовестно через делегацию, и я думаю, что это то, что они хотят.