Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building Outside of the Sandbox

Orta
November 03, 2016

Building Outside of the Sandbox

A timeline of a Cocoa developer

Orta

November 03, 2016
Tweet

More Decks by Orta

Other Decks in Programming

Transcript

  1. ENTERPRISE
    SIGNING

    View Slide

  2. OR

    View Slide

  3. CONTROLLING
    YOUR TOOLS

    View Slide

  4. View Slide

  5. ORTA

    View Slide

  6. 10 years ago

    View Slide

  7. CRUD

    View Slide

  8. CRUD

    View Slide

  9. DRAG & DROP
    PLAYING MEDIA
    LOADING NIBS

    View Slide

  10. The original brief had no concept
    of Unconventional Instruments,
    which came in by user requests.

    View Slide

  11. View Slide

  12. I had to read 4 books before I
    was close to being even slightly
    competent in writing software for
    Mac OS X.


    View Slide

  13. View Slide

  14. 5 years ago

    View Slide

  15. View Slide

  16. View Slide

  17. 2 years ago

    View Slide

  18. 2 years ago

    View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. 6 months ago

    View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. Listen
    id nc = [NSNotificationCenter defaultCenter];
    SEL injected = @selector(appHasBeenInjected:);
    NSString *key = @“INJECTION_BUNDLE_NOTIFICATION”;
    [nc addObserver:self selector:injected name:key object:nil];

    View Slide

  29. - (void)appHasBeenInjected:(NSNotification *)notification
    {
    [self.rootNav popViewControllerAnimated:NO];
    [self runDeveloperExtras];
    }
    in
    jected

    View Slide

  30. - (void)runDeveloperExtras
    {
    NSString *path = @“/artwork/glenn-brown”;
    id switchboard = [ARSwitchBoard sharedInstance];
    id viewController = [switchboard loadPath:path];
    [self pushViewController:viewController animated:YES];
    }
    Recreate

    View Slide

  31. View Slide

  32. - Xcode Plugin
    - Keeps track of all changed files
    - Compiles the changed files via terminal to bundle
    - Bundle is passed to an Injection server in your app
    - Server receives bundle, and loads it
    - Server replaces methods in old classes with new ones
    - Server sweeps though all app memory for instances
    - Server notifies all objects they’ve been changed
    HOW

    View Slide

  33. CAVEATS
    - Won’t work for Swift purists
    - Works fine for pragmatic programmers
    - Requires un-signing Xcode 8

    View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. View Slide

  38. View Slide

  39. View Slide

  40. View Slide

  41. View Slide

  42. View Slide

  43. View Slide

  44. REACT
    WEB
    IOS

    View Slide

  45. REACT
    Share Ideas
    Hot Reloading
    Open Toolchain

    View Slide

  46. RELAY

    View Slide

  47. RELAY

    View Slide

  48. RELAY

    View Slide

  49. RELAY

    View Slide

  50. VSCODE

    View Slide

  51. VSCODE

    View Slide

  52. HOPE

    View Slide

  53. HOPE

    View Slide

  54. HOPE

    View Slide

  55. YOU

    View Slide