爱意满满的作品展示区。
zhicheng

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

  •  
  •   zhicheng · Oct 25, 2017 · 2219 views
    This topic created in 3129 days ago, the information mentioned may be changed or developed.

    下面的代码示例

    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 多行代码,欢迎大家帮忙测试和改进。

    Supplement 1  ·  Oct 26, 2017
    傻逼了,光想着写个代理示例忘发地址了,地址在此

    https://github.com/zhicheng/lobjc
    5 replies    2017-10-26 17:03:33 +08:00
    noli
        1
    noli  
       Oct 25, 2017
    精神可嘉,送你一波铜币,聊表敬意。
    期待 有 lemon lang 的详细 tutorial 以及 feature
    xiubin
        2
    xiubin  
       Oct 26, 2017
    示例代码在哪里。。
    forestyuan
        3
    forestyuan  
       Oct 26, 2017
    开源吗?
    pheyer
        4
    pheyer  
       Oct 26, 2017
    怎么调试?
    zhicheng
        5
    zhicheng  
    OP
       Oct 26, 2017
    傻逼了,光想着写个代理示例忘发地址了,地址在此

    https://github.com/zhicheng/lobjc

    @forestyuan 是开源的。
    @pheyer 暂没有调试的机制。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5410 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 03:43 · PVG 11:43 · LAX 20:43 · JFK 23:43
    ♥ Do have faith in what you're doing.