Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Give instructions directly to a running iOS app in the simulator, through a clojure repl using Nu Lisp instructions. You can play with whatever objects that are accessible. Wanted something like RubyMotion REPL. So hacked this up!
Objective-C C Assembly Clojure
Latest commit 9286dae @roupam Updated README
Failed to load latest commit information.
Remote Objective-C NuREPL for iOS
objc-repl Objective-C NuREPL for iOS
.DS_Store Objective-C NuREPL for iOS Updated README

Objective-C NuREPL for iOS

Give instructions directly to a running iOS app in the simulator, through a clojure repl. You can play with whatever objects that are synthesized ie., accessible. The code syntax used for sending instructions is Nu Lisp.

Thanks to Tim Burks for Nu Lisp!


Add the static libraries and .h .m files in the "Remote" folder into your XCode project.

In the app delegate .h file add the following above @interface:

@class SPNuRemote;

Declare in the app delegate interface an SPNuRemote object

SPNuRemote *remote;

In the app delegate .m file

#import "NuRemote/SPNuRemote.h"

and somewhere in the function

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions


remote = [SPNuRemote new];
[remote run];

Thats it!


First run the simulator app. Then do a

 lein swank

in objc-repl and complile the core.clj

To execute a line of code in iOS simulator call the sim function.

For example to do

NSLog("Hello ObjC from Clojure")

Use the following method

objc-repl.core> (sim "(log \"Hello ObjC from Clojure\")")

General syntax is

(sim "Nu Code")

Nu code is Objective-C code but with square brackets replaced with round ones. NSStrings are just "string" instead of @"string" Selectors are defined as "showScreen" instead of @selector(showScreen) and, structs like CGRect for frames are lists


Suppose there is a button synthesized inside a class rootViewController, and we want to change its backgroundcolor:

objc-repl.core> (sim "(set root (((UIApplication sharedApplication) delegate) viewController))")
objc-repl.core> (sim "((root button) setBackgroundColor:(UIColor greenColor))")

Like changing a button frame

objc-repl.core> (sim "(button setFrame:'(10 10 20 20))")

Creating a cutom button

For example UIButtonTypeCustom is 0 and UIControlStateNormal is also 0

objc-repl.core> (sim "(set button (UIButton buttonWithType:'0))")
objc-repl.core> (sim "(button setFrame:'(0 0 80 50))")
objc-repl.core> (sim "(button setTitle:\"Click Me\" forState:'0)")
objc-repl.core> (sim "((rootViewController view) addSubview:button)")


Something went wrong with that request. Please try again.