代码之家  ›  专栏  ›  技术社区  ›  Bartłomiej Semańczyk

如何在objective c init中将对象作为依赖项传递?

  •  0
  • Bartłomiej Semańczyk  · 技术社区  · 7 年前

    这是我的objc接口:

    @interface MobileKeysController : NSObject <MobileKeysManagerDelegate>
    - (id) initWithLogger:(Loggable *)logger; //issue: Expected a type
    - (void) didPressRegistrationButton:(NSString *)code;
    @end
    

    我还有一个私人界面:

    @interface MobileKeysController ()
    @property(nonatomic) Loggable *logger;
    @end
    

    和自定义初始化:

    - (id)initWithLogger: (Loggable *) logger_ {
        self = [super init];
        // how can I assign it here from an init?
        return self;
    }
    

    这是我的Swift定义:

    protocol Loggable: class {
        func log(_ category: FirebaseCategory, _ type: FirebaseEventType, _ dataProvider: FirebaseEventDataProvider)
    }
    
    @objc class FirebaseLogger: NSObject, Loggable {
        // MARK: - Loggable
        func log(_ category: FirebaseCategory, _ type: FirebaseEventType, _ dataProvider: FirebaseEventDataProvider) {
            log(category.rawValue, type.value, dataProvider.parameters)
        }
    }
    

    我需要像这样使用Swift文件:

    let logger = FirebaseLogger()
    return MobileKeysController(logger: logger)
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   LDNZh    7 年前

    使用 id<Loggable> 而不是 Loggable * 并用 @objc