2013-11-21 2 views
2

Скажем, я загружаю некоторый текст из webservice, содержащий код объектива-c, есть ли способ сделать его селектором?Есть ли способ построить функцию из NSString?

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

+0

Итак, вы хотите, чтобы загрузить код из Интернета и запустить его на устройстве? Невозможно, если я правильно понял ваш вопрос. – juniperi

+0

вам нужно установить строку как uilabel/uitextfield, как текст, установить ее и установить на нее жест выделения, то есть на. –

+0

Функция и селектор не являются удаленно одним и тем же. Функция представляет собой последовательность исполняемого кода; селектор - это всего лишь идентификатор. – Chuck

ответ

4

гм, то, что вы имеете в виду Obj-C код ...

Вы загружаете класс/код, который нужно скомпилировать во время выполнения?

или у вас уже есть эти методы в вашей реализации, служба сообщает только, какие методы вызывать?

Если последнее верно, то вы можете использовать это:

SEL aSelector = NSSelectorFromString(@"methodName")

нужно учитывать, что, если этот метод содержит параметры, которые вы будете строку, как это:

SEL aSelector = NSSelectorFromString(@"methodNameWithParam:anotherParam:")

NSSelectorFromString ref

Если первое верно, добро пожаловать в Objective-c runtime, это технически возможно, но i не Знайте, что руководство Apple будет слишком любезно загружать и исправлять код во время выполнения.

надеюсь, что это поможет.

+0

Да, я имею в виду компиляцию кода во время выполнения, есть ли образец для начала? –

+1

@IdanMoshe: Я не думаю, что вы найдете много примеров компиляции источника во время выполнения. Это действительно необычное требование для Objective-C. Большинство программ, которые динамически загружают код, загружают машинный код, а не источник. С высоты птичьего полета решение состоит в том, что вам придется связать компилятор с вашим приложением. – Chuck

+0

Хорошо, спасибо за объяснение. –

0

Вы можете использовать функцию NSSelectorFromString(), чтобы получить SEL (селектор) от объекта NSString.

0

Похоже, вы хотите загрузить дополнительную функциональность из webservices? У вас есть только функции/селекторы имена в этом тексте или тела/реализации также? В последнем случае вы не можете запускать не скомпилированный код, вы должны сначала скомпилировать его, а затем, в зависимости от того, позволяет ли платформа загружать исполняемые файлы во время выполнения - вы можете попробовать запустить ее.

Если это просто имена методов -

NSSelectorFromString() 
Смежные вопросы