写了一个 Lemon 语言到 Objective-C 的绑定,可以用 Lemon 语言写 Mac 和 iOS 了。

2017-10-25 18:45:25 +08:00
 zhicheng

下面的代码示例

import 'lobjc.so' as objc;

var NSObject = objc.NSClassFromString('NSObject');
var NSColor = objc.NSClassFromString('NSColor');
var NSWindow = objc.NSClassFromString('NSWindow');
var NSWindowController = objc.NSClassFromString('NSWindowController');
var NSApplication = objc.NSClassFromString('NSApplication');

@objc.protocol('NSWindowDelegate')
class WindowDelegate(NSObject) {
        def windowDidResize_(var n) {
        }
}

class WindowController(NSWindowController) {
}

@objc.protocol('NSApplicationDelegate')
class AppDelegate(NSObject) {
        def applicationDidFinishLaunching_(var aNotification) {
                self.window = NSWindow(
                        contentRect = objc.CGRectMake(10, 10, 800, 600),
                        styleMask = objc.NSWindowStyleMaskMiniaturizable |
                                        objc.NSWindowStyleMaskTitled |
                                        objc.NSWindowStyleMaskClosable |
                                        objc.NSWindowStyleMaskResizable,
                        backing = objc.NSBackingStoreBuffered,
                        defer = false);

                self.window.setTitle_("Hello,World!");
                self.windowDelegate = WindowDelegate();
                self.window.setDelegate_(self.windowDelegate);
                self.window.setBackgroundColor_(NSColor.whiteColor());
                self.windowController = WindowController(window=self.window);
                self.windowController.showWindow_(self);

                self.windowController.showWindow_(self.windowController);
        }

        def applicationShouldTerminateAfterLastWindowClosed_(var app) {
                return true;
        }
}

var delegate = AppDelegate();
var app = NSApplication.sharedApplication();
app.setDelegate_(delegate);
app.run();

更多例子可以看代码里的 example 目录。目前只有 2000 多行代码,欢迎大家帮忙测试和改进。

1776 次点击
所在节点    分享创造
5 条回复
noli
2017-10-25 18:55:12 +08:00
精神可嘉,送你一波铜币,聊表敬意。
期待 有 lemon lang 的详细 tutorial 以及 feature
xiubin
2017-10-26 10:14:36 +08:00
示例代码在哪里。。
forestyuan
2017-10-26 10:26:19 +08:00
开源吗?
pheyer
2017-10-26 14:31:47 +08:00
怎么调试?
zhicheng
2017-10-26 17:03:33 +08:00
傻逼了,光想着写个代理示例忘发地址了,地址在此

https://github.com/zhicheng/lobjc

@forestyuan 是开源的。
@pheyer 暂没有调试的机制。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/400702

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX