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