REPL для Objective-C - PullRequest
       2

REPL для Objective-C

18 голосов
/ 02 февраля 2011

Есть ли ответ для Objective-C?

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

Ответы [ 6 ]

9 голосов
/ 05 февраля 2011

F-Script предоставляет вдохновленный Smalltalk REPL для разработки Какао, а Nu предоставляет основанный на Lisp. F-Script выглядит немного более отточенным и предлагает браузер объектов.

Кажется, они оба нацелены на OS X, а не на iOS. Есть отдельные посты на форумах и в блогах с людьми, описывающими использование Nu для разработки приложений для iOS, но, похоже, все они появились примерно два года назад. Также на YouTube есть видео «Использование схемы REPL для отладки приложений iPhone в режиме реального времени» со скринкастом с человеком, использующим схему для отладки приложения iPhone.

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

<Ч />

Я только что понял, что есть более простой ответ на все это. Если вы пришли из Python и хотите поэкспериментировать с какао в REPL, вам просто нужно использовать Python REPL. OS X поставляется с Python для Objective-C bridge . Просто запустите Python, сделайте import objc, и все готово. Также есть мосты для Ruby и Common Lisp.

Конечно, все эти REPL только позволяют вам писать динамический код для взаимодействия с Какао, но они не позволяют вам писать настоящий код Objective-C и интерпретировать его или компилировать на лету для динамического взаимодействия с ним. Так что ни один из них не соответствует вашим первоначальным требованиям.

4 голосов
/ 02 февраля 2011

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

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

3 голосов
/ 02 февраля 2011

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

Для чистого C существует CCons.

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

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

1 голос
/ 19 октября 2016

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

0 голосов
/ 02 мая 2018

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

«объект печати»

po object

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

expression i = 5

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

0 голосов
/ 13 августа 2013

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

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

...