diff --git a/coobjc/co/COChan.m b/coobjc/co/COChan.m index e34ddf9..e51f509 100644 --- a/coobjc/co/COChan.m +++ b/coobjc/co/COChan.m @@ -264,7 +264,9 @@ - (id)receive { + (instancetype)sleep:(NSTimeInterval)duration { COTimeChan *chan = [self chanWithDuration:duration]; + __weak __typeof(chan) weakChan = chan; chan.timer = [[CODispatch currentDispatch] dispatch_timer:^{ + __strong __typeof(chan) chan = weakChan; [chan send_nonblock:@1]; } interval:duration];