REPL за Objective-C

Има ли REPL за Objective-C?

Уча Objective-C и много ми липсва REPL, идващ от фона на Python.


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


Отговори (6)


Когато се задейства точка на прекъсване, дебъгерът трябва да се отвори. Когато сте в програмата за отстраняване на грешки, можете да въведете каквото искате в gdb. Можете да използвате p [someObj someMethod], за да отпечатате неща, които са в обхвата на вашата точка на прекъсване. gdb е мощна помощна програма, добре документирана в цялата мрежа.

Това ще бъде възможно най-близо до това, което според мен преследвате. Това е просто много по-тромаво нещо в компилираните езици, тъй като няма eval в Objective-C.

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.

Повечето неща в Objective-C API на Apple (особено 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 notebook, 'import objc' не бе успешно. 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
object-c bridge все още съществува за JXA и Applescript - person Sancarn; 21.05.2017