REPL для цели-C

Есть ли REPL для Objective-C?

Я изучаю Objective-C, и мне очень не хватает REPL, исходя из фона Python.


person agiliq    schedule 02.02.2011    source источник


Ответы (6)


Когда срабатывает точка останова, отладчик должен открыться. Находясь в отладчике, вы можете ввести все, что хотите, в gdb. Вы можете использовать p [someObj someMethod] для вывода вещей, которые находятся в области действия вашей точки останова. gdb — мощная утилита, хорошо задокументированная во всем Интернете.

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

person Alex Wayne    schedule 02.02.2011
comment
Вы не можете объявлять и/или выделять новые переменные внутри отладчика, верно? Вы можете только проверять/изменять существующие переменные. - person d11wtq; 13.02.2013
comment
Да, ты можешь. stackoverflow.com/questions/11192511/ - person Alex Brown; 08.01.2014
comment
Вы также можете использовать команду lldb «expr», которая также позволяет присваивать - person Alex Brown; 08.01.2014

Насколько мне известно, ближе всего к REPL на данный момент можно добраться через отладчики (например, GDB или отладчик LLVM LLDB).

Для чистого C есть CCons.

Большинство вещей в Apple Objective-C API (особенно Foundation) также имеют прямые эквиваленты C (например, CFRelease(obj); совпадает с [obj release];), которые вы можете использовать в CCons.

CCons построен на основе LLVM и Clang, которые также поддерживают Objective-C. Вероятно, можно расширить CCons для поддержки Objective-C.

person mrueg    schedule 02.02.2011

«Пробная» версия CoderPad предоставляет общедоступный самостоятельный REPL для миллиона языков, включая objc!!! Я только что использовал его, и это действительно хороший инструмент продаж для них (я не аффилирован, они делают инструменты для людей, проводящих собеседования с программистами). https://coderpad.io/

person AnneTheAgile    schedule 19.10.2016

В проекте Gambit Objective-C, похоже, предпринимается попытка создать REPL на основе схемы.

REPL в Ruby Motion также должен быть хорош для исследовательских целей (сам я не пробовал, хоть).

person Jacob Oscarson    schedule 13.08.2013

Да, REPL находится в окне вывода.

"печатный объект"

po object

но также выполнять команды, которые работают как код приложения с

expression i = 5

Прочитайте эту интересную полную статью об отладке для получения дополнительной информации.

person Karsten    schedule 02.05.2018

person    schedule
comment
Python 2.7 с использованием ноутбука jupyter, «импорт объекта» не выполнен. URL-адрес яблока говорит, что страница не найдена. - person AnneTheAgile; 14.10.2016
comment
Хорошая точка зрения. Я думаю, что в какой-то момент за последние пять лет Apple прекратила поддержку моста Objective-C. На данный момент лучший способ взаимодействия с Cocoa из REPL — это Swift. Просто беги быстро. Я не знаю ничего хорошего для Objective-C. - person algal; 15.10.2016
comment
Я нашел CoderPad, смотрите мой новый ответ. - person AnneTheAgile; 19.10.2016
comment
мост Objective-C все еще существует для JXA и Applescript - person Sancarn; 21.05.2017