Jordan,
So sorry, my snippet really wasn’t helpful there! Gah. I realise the extension
wasn’t right! Sorry *facepalm*.
So I have a project. Its deployment target is iOS 10 (because we need 10.0
compatibility for the foreseeable future).
If I add the following code I get errors when it builds:
class MyViewControllerSubclass: UIViewController {
@available(iOS, introduced: 11.0)
override var additionalSafeAreaInsets: UIEdgeInsets {
didSet {
// Need to do work here
}
}
}
My only solution at this stage is currently to KVO on the
AdditionalSafeAreaInsets property, which works, but this seems to point out a
language deficiency.
Thanks
> On 3 Aug 2017, at 3:24 am, Jordan Rose <[email protected]> wrote:
>
> I'm not sure why you're using 'override' in an extension. Did you mean to put
> that in a subclass? It seems to work for me there.
>
> Yes, Swift will not let you replace existing methods/properties using an
> extension if it can statically see that the method/property already exists.
> (It's not even safe to do that in Objective-C, but the language doesn't stop
> you.)
>
> Jordan
>
>
>> On Aug 1, 2017, at 22:46, Rod Brown via swift-users <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>> Looks like this is a duplicate of this issue:
>>
>> https://bugs.swift.org/browse/SR-1486 <https://bugs.swift.org/browse/SR-1486>
>>
>> I’m curious if anyone knows whether that is actually a bug, or a behavioural
>> choice on Swift’s part?
>>
>>
>>> On 2 Aug 2017, at 10:31 am, Rod Brown via swift-users
>>> <[email protected] <mailto:[email protected]>> wrote:
>>>
>>> Hi everyone,
>>>
>>> Something I’ve come across in iOS 11 is that you can’t override properties
>>> that are only available on iOS 11 when deploying with a deployment target
>>> less than the current target.
>>>
>>> For example the following code is invalid:
>>>
>>> extension UIViewController {
>>>
>>> @available(iOS, introduced: 11.0)
>>> open override var additionalSafeAreaInsets: UIEdgeInsets {
>>> didSet {
>>> // Do work here only relevant to iOS 11
>>> }
>>> }
>>> }
>>>
>>> This would be easily overridden in Obj-C, but I can’t do it in Swift. Is
>>> there any reason why this limitation exists?
>>>
>>> Thanks,
>>>
>>> Rod
>>> _______________________________________________
>>> swift-users mailing list
>>> [email protected] <mailto:[email protected]>
>>> https://lists.swift.org/mailman/listinfo/swift-users
>>> <https://lists.swift.org/mailman/listinfo/swift-users>
>>
>> _______________________________________________
>> swift-users mailing list
>> [email protected] <mailto:[email protected]>
>> https://lists.swift.org/mailman/listinfo/swift-users
>
_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users