[swift-users] Unavailable initializers in -Swift.h

Svein Halvor Halvorsen svein.h at lvor.halvorsen.cc
Wed Jun 8 08:12:18 CDT 2016


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160608/e4ac2186/attachment.html>


More information about the swift-users mailing list