Objective-CのREPLはありますか?
私はObjective-Cを学んでいて、Pythonのバックグラウンドから来たREPLをひどく見逃しています。
Objective-CのREPLはありますか?
私はObjective-Cを学んでいて、Pythonのバックグラウンドから来たREPLをひどく見逃しています。
F-ScriptはCocoa開発用のSmalltalkにインスパイアされたREPLを提供し、 NuはLispベースのREPLを提供します。F-Scriptはもう少し洗練されているようで、オブジェクトブラウザを提供します。
どちらもiOS開発ではなくOSXをターゲットにしているようです。iOSアプリの開発にNuを使用することを説明するフォーラムやブログの投稿が散在していますが、それらはすべて約2年前のもののようです。また、YouTubeビデオ「SchemeREPLを使用してiPhoneアプリをリアルタイムでデバッグする」と、Schemeを使用してiPhoneアプリをデバッグする仲間のスクリーンキャストもあります。
私はこれらの技術のどれも実験していませんが、持っている人から聞いてみたいです。
私はこれらすべてにもっと簡単な答えがあることに気づきました。Pythonを使用していて、REPLでCocoaを試してみたい場合は、PythonREPLを使用する必要があります。OS Xには、PythonからObjective-Cへのブリッジが付属しています。Pythonを実行するだけで、実行import objc
できます。とりわけ、RubyとCommonLispのブリッジもあります。
もちろん、これらのREPLはすべて、Cocoaと対話するための動的コードを作成することしかできませんが、実際のObjective-Cコードを記述し、それを解釈したり、その場でコンパイルして動的に対話したりすることはできません。したがって、元の要件を真に満たすものはありません。
ブレークポイントがトリガーされると、デバッガーがポップオープンするはずです。デバッガーでは、 gdbに好きなものを入力できます。p [someObj someMethod]
ブレークポイントの範囲内にあるものを印刷するために使用できます。gdbは、Web全体で十分に文書化されている強力なユーティリティです。
それはあなたが私があなたが求めていると思うものに近づくのと同じくらい近くなるでしょう。eval
これは、Objective-Cにはないので、コンパイルされた言語で行うのは非常に厄介なことです。
私の知る限り、現時点でREPLに最も近いのは、デバッガー(つまり、GDBまたはLLVMデバッガーLLDB)を使用することです。
純粋なCの場合、CConsがあります。
AppleのObjective-CAPI(特にFoundation)のほとんどのものには、CConsで使用できる直接Cの同等物(たとえばCFRelease(obj);
、と同じ)もあります。[obj release];
CConsは、Objective-CもサポートするLLVMとClangの上に構築されています。CConsを拡張してObjective-Cもサポートすることはおそらく可能です。
CoderPadの「トライアル」は、objcを含む無数の言語に対して一般向けの自己のみのREPLを提供します!!! 私はちょうどそれを使用しました、そしてそれは彼らにとって本当に良い販売ツールです(私は提携していません;彼らはコーダーにインタビューする人々のためのツールを作ります)。https://coderpad.io/
Gambit Objective-Cプロジェクトでは、SchemeベースのREPLを作成する試みがあるようです。
Ruby MotionのREPLは、探索的な目的にも適しているはずです(ただし、私自身は試していません)。
はい、REPLは出力ウィンドウにあります。
「印刷オブジェクト」
po object
だけでなく、アプリコードとして実行されているコマンドを実行します
expression i = 5
詳細については、この興味深い完全なデバッグ記事をお読みください。