Very helpful, thank you. 

-- 
Rick Mann
rm...@latencyzero.com

> On Sep 13, 2017, at 21:24, Hooman Mehr <hoo...@mac.com> wrote:
> 
> Documentation is behind the actual state.
> 
> What you see is the result of this change: SE-0160 Limiting @objc inference
> 
>> On Sep 13, 2017, at 5:18 PM, Roderick Mann <rm...@latencyzero.com> wrote:
>> 
>> Ah. That's the difference. Okay.
>> 
>> Nevertheless, the Apple docs on the matter are unclear at best 
>> (https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html):
>> 
>> "Declarations marked with the dynamic modifier must also be explicitly 
>> marked with the @objc attribute unless the @objc attribute is implicitly 
>> added by the declaration’s context. For information about when the 
>> @objcattribute is implicitly added, see Declaration Attributes in The Swift 
>> Programming Language (Swift 4)."
>> 
>> The referenced doc has a lot of stuff, so it's hard to zero in on the 
>> discussion of implicit-objc, but there's this:
>> 
>> "The compiler implicitly adds the objc attribute to subclasses of any class 
>> defined in Objective-C."
>> 
>> To me, this means that my NSObject-derived class is implicitly @objc, and so 
>> the members within it (the declaration context) shouldn't need @objc as well.
>> 
>> To help me understand better, can you have dynamic without an implicit or 
>> explicit @objc? It seems not, and if not, why isn't it enough for dynamic to 
>> then just imply @objc to the compiler?
>> 
>> Thanks,
>> Rick
>> 
>> 
>> 
>> 
>> 
>>> On Sep 13, 2017, at 17:06 , Hooman Mehr <hoo...@mac.com> wrote:
>>> 
>>> When you create a new project in Xcode 9, the defaults for compiler 
>>> settings are different. The errors you see are the result of running in 
>>> full (strict) Swift 4.0 mode which has some such breaking changes.
>>> 
>>>> On Sep 13, 2017, at 3:56 PM, Rick Mann via swift-users 
>>>> <swift-users@swift.org> wrote:
>>>> 
>>>> I have an iOS app in which I'm factoring out code into a Framework. In 
>>>> Xcode 9 GM (Swift 4), the code builds fine when it's a monolithic app, but 
>>>> some of the files I've pulled into the framework are no longer compiling. 
>>>> One of the errors is:
>>>> 
>>>> Model.swift:471:14: 'dynamic' var 'dateCreated' must also be '@objc'
>>>> 
>>>> The class looks like:
>>>> 
>>>> import Foundation
>>>> 
>>>> class
>>>> MPObject : NSObject
>>>> {
>>>>  ....
>>>>  dynamic var       dateCreated : Date?
>>>>  ....
>>>> }
>>>> 
>>>> If I add @objc to each dynamic member, it seems to silence the errors, but 
>>>> the @objc should be implicit due to inheriting from NSObject, and as I 
>>>> said, it builds without error as a monolithic app.
>>>> 
>>>> -- 
>>>> Rick Mann
>>>> rm...@latencyzero.com
>>>> 
>>>> 
>>>> _______________________________________________
>>>> swift-users mailing list
>>>> swift-users@swift.org
>>>> https://lists.swift.org/mailman/listinfo/swift-users
>>> 
>> 
>> 
>> -- 
>> Rick Mann
>> rm...@latencyzero.com
> 
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to