Documentation is behind the actual state. What you see is the result of this change: SE-0160 Limiting @objc inference <https://github.com/apple/swift-evolution/blob/master/proposals/0160-objc-inference.md>
> 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 > > <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 <mailto:rm...@latencyzero.com>
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users