You are correct! Thanks! -Kenny
> On Jan 5, 2018, at 1:24 PM, Shawn Erickson <shaw...@gmail.com> wrote: > > At the moment an optional closure is considered escaping so you don’t have to > state it using @escaping and as you see you actually can’t. A bug or two > exists against Swift related this and I don’t know their current state. > > If after removing @escaping things still fail to compile please post a code > example. > > -Shawn > On Fri, Jan 5, 2018 at 1:17 PM Kenny Leung via swift-users > <swift-users@swift.org <mailto:swift-users@swift.org>> wrote: > Because it’s being assigned to an ivar, it’s forced to be escaping, or so the > compiler tells me. > > -Kenny > > >> On Jan 5, 2018, at 12:04 PM, Kevin Nattinger <sw...@nattinger.net >> <mailto:sw...@nattinger.net>> wrote: >> >> If you remove the @escaping you'll notice it doesn't complain about a >> non-escaping closure escaping. >> I could be wrong, but I believe that's because using it as an associated >> value forces it to escape on the calling side. >> >> func esc(_ x: @escaping () -> ()) { >> x() >> } >> func noesc(_ x: () -> ()) { >> x() >> } >> >> func foo() { >> noesc { >> print(owner) // compiles >> } >> esc { >> print(owner) // error: requires explicit 'self.'… >> } >> Optional<()->()>.some { >> print(owner) // error: requires explicit 'self.'… >> } >> } >> >> >>> On Jan 5, 2018, at 11:48 AM, Kenny Leung via swift-users >>> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote: >>> >>> Hi All. >>> >>> It seems that if you have an escaping closure argument, you can’t make it >>> optional. Am I right? >>> init ( >>> owner:AnyObject, >>> handler:@escaping (HXObserverNotification)->Void >>> ) { >>> self.owner = owner >>> self.handler = handler >>> } >>> >>> You could try this: >>> init ( >>> owner:AnyObject, >>> handler:@escaping ((HXObserverNotification)->Void)? >>> ) { >>> self.owner = owner >>> self.handler = handler >>> } >>> You get “@escaping attribute only applies to function types” >>> >>> Or you could try this: >>> init ( >>> owner:AnyObject, >>> handler:(@escaping (HXObserverNotification)->Void)? >>> ) { >>> self.owner = owner >>> self.handler = handler >>> } >>> You get “@escaping attribute may only be used in function parameter >>> position” >>> >>> -Kenny >>> >>> >>> _______________________________________________ >>> swift-users mailing list >>> swift-users@swift.org <mailto:swift-users@swift.org> >>> https://lists.swift.org/mailman/listinfo/swift-users >>> <https://lists.swift.org/mailman/listinfo/swift-users> >> > > _______________________________________________ > swift-users mailing list > swift-users@swift.org <mailto:swift-users@swift.org> > https://lists.swift.org/mailman/listinfo/swift-users > <https://lists.swift.org/mailman/listinfo/swift-users>
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users