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> 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
> 

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to