Slide 1

Slide 1 text

$%&WFOUT 3FBDUJWF$PDPB ͰϑΝΠϧ؂ࢹ 3FBDUJWF$PDPB5PLZP !VBTJ

Slide 2

Slide 2 text

ࣗݾ঺հ!VBTJ *ODSFNFOUTגࣜձࣾ ੨প൐थ

Slide 3

Slide 3 text

w,PCJUPͰϑΝΠϧ؂ࢹ wΧελϜ$44 w%#ಉظ

Slide 4

Slide 4 text

'4&WFOUT"1*

Slide 5

Slide 5 text

FSEventStreamRef FSEventStreamCreate( CFAllocatorRef allocator, FSEventStreamCallback callback, FSEventStreamContext *context, CFArrayRef pathsToWatch, FSEventStreamEventId sinceWhen, CFTimeInterval latency, FSEventStreamCreateFlags flags); $"1* UPPMPXMFWFM

Slide 6

Slide 6 text

$%&WFOUT /rastersize/CDEvents

Slide 7

Slide 7 text

self.events = [[CDEvents alloc] initWithURLs:URLs block:^(CDEvents *watcher, CDEvent *event) { doSomething(); }];

Slide 8

Slide 8 text

$%&WFOUT 3"$&YUFOTJPOT git.io/-G5IKg

Slide 9

Slide 9 text

self.signal = [CDEvents rac_signalForEventsWithURLs: URLs]; [self.signal subscribeNext:^(RACTuple *t) { RACTupleUnpack( CDEvents *watcher, CDEvent *event) = t; doSomething(); }];

Slide 10

Slide 10 text

self.events = [[CDEvents alloc] initWithURLs:URLs block:^(CDEvents *watcher, CDEvent *event) { doSomething(); }]; ʢ࠶ܝʣ

Slide 11

Slide 11 text

w௕͘ͳͬͯΔ͚Ͳʜ wpMUFS wUISPUUMF w࢖͑ͯศརʂʂʂ

Slide 12

Slide 12 text

+ rac_signalFor... { ... objc_setAssociatedObject( signal, // ←γάφϧ͕ _cmd, watcher, // ←͍ͭ͜Λอ࣋ OBJC_ASSOCIATION_RETAIN); $%&WFOUTͷ Πϯελϯε͸ʁ

Slide 13

Slide 13 text

MJCFYUPCKDͷ࿩ /jspahrsummers/libextobjc

Slide 14

Slide 14 text

!XFBLJGZ !TUSPOHJGZ

Slide 15

Slide 15 text

- (void)foo { @weakify(self); self.prop = ^{ @strongify(self); self = ...; } }

Slide 16

Slide 16 text

!PO&YJU\^

Slide 17

Slide 17 text

- (void)foo { @onExit { NSLog(@"3"); }; { @onExit { NSLog(@"1"); }; } NSLog(@"2"); }

Slide 18

Slide 18 text

!DPODSFUFQSPUPDPM

Slide 19

Slide 19 text

@protocol NoDragDrop ; @concrete - (NSUInteger)webView:...; @end ! @concreteprotocol(NoDragDrop) - (NSUInteger)webView:... {...} @end ! @interface MyViewController () ; @end

Slide 20

Slide 20 text

Ά͍ͷΛ࡞ͬͨ

Slide 21

Slide 21 text

!PO%FBMMPD\^ !PO%FBMMPD0G0CKFDU \^ git.io/Yuip2Q

Slide 22

Slide 22 text

- (void)foo { @onDealloc { doSomething(); }; @onDeallocOfObject(bar) { doSomething(); }; }

Slide 23

Slide 23 text

- (void)foo { @onDealloc { doSomething(); }; }

Slide 24

Slide 24 text

- (void)foo { RACDisposable *disposable = [RACObserve()...]; @onDealloc { [disposable dispose]; }; }

Slide 25

Slide 25 text

5IBOLZPV