No description
Find a file
2024-10-04 23:11:28 +08:00
.github/workflows ci 2024-03-06 20:55:51 +08:00
src v0.1.8 2024-03-06 20:47:36 +08:00
tests minor improvements 2023-08-08 02:58:13 +08:00
.gitignore init 2021-05-01 19:28:57 +08:00
config.nims -Wno-incompatible-function-pointer-types 2024-03-24 22:24:40 +08:00
objc_runtime.nimble v0.1.9 2024-03-24 22:25:58 +08:00
README.md update readme 2024-10-04 23:11:28 +08:00

objc_runtime Build Status

objective-c runtime bindings provide macro objcr allow you write message sending style code

NOTICE: This library works fine on x86, If you are using this library on an ARM64 architecture (such as Apple Silicon), please be aware that objc_msgSend requires properly typed signatures. On x86, this function works without strict type conversion, but on ARM64, failing to cast the function correctly will lead to runtime crashes.


proc main() =

  objcr:
    [NSApplication sharedApplication]

    if NSApp.isNil:
      echo "Failed to initialized NSApplication...  terminating..."
      return
    [NSApp setActivationPolicy: NSApplicationActivationPolicyRegular]

    var menuBar = [[NSMenu alloc]init]
    var appMenuItem = [[NSMenuItem alloc]init]
    var appMenu = [[NSMenu alloc]init]

    [appMenu addItemWithTitle: @"Quit", action: "terminate:", keyEquivalent: @"q"]
    [appMenuItem setSubmenu: appMenu]
    
    [menuBar addItem: appMenuItem]
    [NSApp setMainMenu: menuBar]

    var mainWindow = [NSWindow alloc]
    var rect = NSMakeRect(0, 0, 200, 200)
    [mainWindow initWithContentRect: rect, styleMask:  NSWindowStyleMaskTitled or NSWindowStyleMaskClosable or NSWindowStyleMaskMiniaturizable or NSWindowStyleMaskResizable, backing: NSBackingStoreBuffered,
        `defer`: false]

    var pos = NSMakePoint(20,20)
    [mainWindow cascadeTopLeftFromPoint: pos]
    [mainWindow setTitle: "Hello"]
    [mainWindow makeKeyAndOrderFront: NSApp]
    [NSApp activateIgnoringOtherApps: true]
    [NSApp run]


when isMainModule:
  main()