Подтвердить что ты не робот

REPL для Objective-C

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

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

4b9b3361

Ответ 1

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

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

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

 

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

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

Ответ 2

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

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

Ответ 3

Насколько я знаю, наиболее близким к тому, что вы можете получить в 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.

Ответ 4

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

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

Ответ 5

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