> On Apr 17, 2017, at 08:54 , Joe Groff <jgr...@apple.com> wrote:
> 
> 
>> On Apr 14, 2017, at 7:41 PM, Rick Mann via swift-users 
>> <swift-users@swift.org> wrote:
>> 
>> I'm refactoring some Objective-C code to inherit from a new Swift super 
>> class. This has been going okay, and I've been cleaning up build errors as I 
>> spot them (some auxiliary enums caused enum name changes, etc.).
>> 
>> But my last error seems to be that I can't subclass the Swift class: "Cannot 
>> subclass a class with objc_subclassing_restricted attribute". I didn't 
>> notice it before, and all the online references that say you can't subclass 
>> a Swift class point to a Swift document that no longer mentions that. They 
>> also don't say what they mean by "Swift" class (e.g. is it not marked with 
>> @objc?).
>> 
>> In any case, my Swift class looks like:
>> 
>> @objc
>> class
>> Camera : NSObject
>> {
>>   ...
>> }
>> 
>> And my ObjC class looks like:
>> 
>> @interface
>> MCPCamera : Camera
>> 
>>   ...
>> 
>> @end
>> 
>> I feel like this is a reasonable thing to try to do. Is it just not possible?
> 
> Subclassing Swift classes from Objective-C is not supported. If the 
> documentation no longer mentions that restriction, we should fix that. Where 
> is that document that you're referring to?

This is one document that doesn't clearly state it:

        
https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID136

It has nice sections like "Using Swift from Objective-C," and "Declaring a 
Swift Protocol That Can Be Adopted by an Objective-C Class," and "Adopting a 
Swift Protocol in an Objective-C Implementation," but no "Inheriting a Swift 
Class in Objective-C" (the discussion in such a section should explain that it 
can't be done and why). Searching the document for "derive", "inherit", 
"subclass" doesn't turn up any indication this can't be done.

Given that you can do all the other things, and there's such a thing as marking 
a Swift class as @objc, and you can subclass in Swift, it's quite unintuitive 
that you cannot go the other way.

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