Seems reasonable to me. It looks like SR-746 
<https://bugs.swift.org/browse/SR-746> tracks the same thing. Patches welcome!

Jordan

> On Jun 8, 2016, at 7:06, Svein Halvor Halvorsen via swift-users 
> <swift-users@swift.org> wrote:
> 
> This is even worse if I want to create a singleton, and ensure that the only 
> way to access it, is through a static let on the class:
> 
> class Singleton: NSObject {
>     static let instance = Singleton()
>     private override init() {
>         super.init()
>     }
> }
> 
> In Swift, I can't instantiate this class, since it has no internal/public 
> initializers. However, since it inherits from NSObject (which is necessary to 
> access it from objc), I can initialize it from objc, even though it's 
> private. Annotating it with @nonobjc doesn't help either.
> 
> Is there a reason why Swift doesn't automatically declare accessors from the 
> super class, that are either private or @nonobjc in the Swift subclass 
> implementation, as __unavailable?
> 
> Is there anyway I can enforce it using some (combination of) attributes?
> 
> 
> sv.
> 
> 
> 
> 2016-06-08 15:12 GMT+02:00 Svein Halvor Halvorsen <svei...@lvor.halvorsen.cc 
> <mailto:svei...@lvor.halvorsen.cc>>:
> Hi, 
> 
> In Objective-C, I've often attributed initializer from super classes as 
> unavailable. Like this;
> 
> @class Dependency;
> @interface SomeClass : NSObject
> - (nullable instancetype)init __unavailable;
> - (nonnull instancetype)initWithDependency:(nonnull Dependency *)dependency;
> @end
> 
> This makes the compiler complain if I try to instantiate [[SomeClass alloc] 
> init];
> 
> However, If I declare a Swift class like this:
> 
> class SomeClass: NSObject {
>     init(dependency: Dependency) {
>         super.init()
>     }
> }
> 
> The generated header file will look like this:
> 
> @interface SomeClass : NSObject
> - (nonnull instancetype)initWithDependency:(Dependency * _Nonnull)dependency 
> OBJC_DESIGNATED_INITIALIZER;
> @end
> 
> If I try to use init, it will be a run time error, and not a compile time 
> error.
> It there any way I can make Swift create the desired objc header file?
> 
> 
> Svein Halvor
> 
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to