I have a generic class that I would like to use. I¹ll include the whole source.
public final class EventRegistration<E: AppEvent> { private(set) var event: E? private var token: AnyObject? public init() {} public init(event: AppEvent, token: AnyObject) { self.event = event self.token = token } public func unregister() { if let token = self.token, let event = self.event { event.unregister(token) } token = nil event = nil } public var isRegistered: Bool { return token != nil } deinit { unregister() } } I would like to use this class in my AppEvent class. Among other things AppEvent has a method register() public class AppEvent : CustomStringConvertible { Š public func register(notification: (NSNotification! -> Void))->EventRegistration<???> { let eventName = self.dynamicType.eventName() let token = NSNotificationCenter.defaultCenter().addObserverForName(eventName, object: nil, queue: self.dynamicType.eventQueue(), usingBlock: notification) let registration = EventRegistration(event: self, token: token) return registration } I have 50-100 subclasses of AppEvent that I use directly. public class SomeEvent: AppEvent {} public class SomeOtherEvent: AppEvent {} public class EvenSomeOtherEvent: AppEvent {} They all inherit the register() function. I would like the following. Let some = SomeEvent().register() { note in } some.event.self should be ³SomeEvent² Because SomeEvent.register() returns EventRegistration<SomeEvent> All the parts are there for this to be statically typed. If I implemented register in each class I could get the behavior I want. What I am looking for is a way to say ³the current dynamic type², sort of like ³Self². Is there a signature for "public func register(notification: (NSNotification! -> Void))->EventRegistration<???>" that would accomplish this, or does this break some type rule I am not aware of, or is it just a missing language feature. If you want points, see: http://stackoverflow.com/questions/38193012/specifying-a-dynamic-type-in-sw ift-generics Thanks, Jon _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users