[swift-evolution] Nongeneric classes that inherit from generic classes not visible from objc

Davide Mendolia davide at karumi.com
Wed Dec 14 07:47:00 CST 2016


Hi,

Maybe this has been asked before but I couldn't find it.

I would like to be able to give visibility of non-generic subclass of a
generic class to obj-c. Is there any limitation of the compiler knowing
that the type of the non-generic type is closed, to generate a compatible
version for obj-c?

Code Example:

class SwiftSuperType<T: NSObjectProtocol> : NSObject {

}

class NonGenericClass2: SwiftSuperType<NSObject> {

}

Or with a obj-c super class:

@interface ObjcSuperType<T: id<NSObject>> : NSObject

@end

class NonGenericClass: ObjcSuperType<NSObject> {

}


Actual Behaviour:

Non-generic classes are not visible in obj-c. If adding the @objc notation
we get the following error.

Actual error message:
Generic subclasses of '@objc' classes cannot have an explicit '@objc'
attribute because they are not directly visible from Objective-C

regards,

--
Davide Mendolia
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20161214/0aa117b6/attachment.html>


More information about the swift-evolution mailing list