2009-12-15 2 views
3

Чтобы создать изолированную среду для разработки CoreGraphics (которая в настоящее время состоит из выполнения нескольких попыток сборки и запуска для достижения желаемого эффекта), мне было любопытно, был ли способ для динамической загрузки файла класса во время выполнения.Загрузите файл класса динамически (Objective-C)

Как и в случае с классом-загрузчиком Java, я надеялся использовать NSBundle или что-то похожее на динамическую загрузку класса в память.

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

+0

Статья, описывающая динамические связки: http://www.stone.com/The_Cocoa_Files/Dynamic_Bundles.html –

ответ

3

NSBundle можно использовать для загрузки кода динамически. Посмотрите на -load.

Я не понимаю, почему вы хотите перезагрузить такой комплект. (Вы можете через -unload и -load.) Он чувствует себя не так, единственный код, который снова вызывается, - +load и +initialize. Вам просто нужно создать новый экземпляр вашего класса.

+0

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

+0

Если у вас нет ссылок на комплект при его выгрузке, вы можете просто использовать '-unload'. Если у вас есть ссылки, я не могу вам помочь, у меня нет опыта в этой области. Возможно, вы можете решить свою проблему, используя поддержку пакета CoreFoundation, используя 'CFBundle', который сильно отличается от' NSBundle'. –