[swift-corelibs-dev] non-inherited init

Philippe Hausler phausler at apple.com
Thu Mar 17 09:42:01 CDT 2016


That is a comment emitted by the importer, unfortunately it is impossible for non objc to mimic that behavior 100% because it is an init method that is constructed from a class method.

@interface Foo : NSObject
+ (Foo *)fooNamed:(NSString *)name; // this is not an inherited init method in that it will always return an instance of a Foo no matter the subclass it is called from
@end

@interface Bar : Foo
@end

// in objc it is like this:
Foo *f = [Bar fooNamed:@“test”];

// in swift it is like this:
let f = Bar(named:”test”)

but obviously by the method fooNamed always returns a Foo instead of an instancetype because it actually looks up Foo objects from a table.

> On Mar 17, 2016, at 7:35 AM, Daniel Eggert via swift-corelibs-dev <swift-corelibs-dev at swift.org> wrote:
> 
> There're some initializers (namely in NSURLSession) that have a comment:
> 
> public /*not inherited*/ init(...
> 
> What is this “not inherited” comment trying to convey, and how would one go about implementing this in Swift?
> 
> /Daniel
> 
> _______________________________________________
> swift-corelibs-dev mailing list
> swift-corelibs-dev at swift.org
> https://lists.swift.org/mailman/listinfo/swift-corelibs-dev



More information about the swift-corelibs-dev mailing list