gpt4 book ai didi

ios - Objective-C 类的 initWithDelegate

转载 作者:行者123 更新时间:2023-11-28 06:30:43 27 4
gpt4 key购买 nike

我已经在一个 swift 项目中导入了这个 Objective-C 类。MMLANSCanner.h

#import <Foundation/Foundation.h>

@class Device;
@protocol MMLANScannerDelegate;
@protocol MMLANScannerDelegate <NSObject>
@required
- (void)lanScanDidFinishScanningWithStatus:(MMLanScannerStatus)status;
- (void)lanScanDidFailedToScan;
@optional
- (void)lanScanProgressPinged:(float)pingedHosts from:(NSInteger)overallHosts;
@end

#pragma mark - Public methods
@interface MMLANScanner : NSObject
-(instancetype)initWithDelegate:(id <MMLANScannerDelegate>)delegate;
@property(nonatomic,weak) id<MMLANScannerDelegate> delegate;
@property(nonatomic,assign,readonly)BOOL isScanning;
- (void)start;
- (void)stop;
@end

我成功创建了桥接头并使 MainVC.Swift 符合 MMLANScannerDelegate。然后我尝试用委托(delegate) self 初始化 MMLanScanner。

import UIKit
import Foundation

class MainVC: UIViewController, MMLANScannerDelegate {

var presenter = MMLANScanner(delegate:self)

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func lanScanDidFindNewDevice(_ device: Device!) {

}

func lanScanDidFailedToScan() {

}

func lanScanDidFinishScanning(with status: MMLanScannerStatus) {

}

func lanScanProgressPinged(_ pingedHosts: Float, from overallHosts: Int) {

}
}

但是我得到错误:

Argument passed to call that takes no arguments

关于如何实现我在 Objective-C 中的 initWithDelegate 函数有什么想法吗?

最佳答案

MLANScanner 没有将 delegate 参数传递给它的 init 方法(delegate 是一个 MLANScanner 的属性

presenter 属性的定义也有问题,因为 self 在创建 MainVC 时无效。

改为这样做:

let presenter = MLANScanner()

override func viewDidLoad() {
super.viewDidLoad()

presenter.delegate = self
}

基于对问题的编辑:

var presenter: MLANScanner!

override func viewDidLoad() {
super.viewDidLoad()

presenter = MLANScanner(delegate: self)
}

注意:我编辑过的答案假设某处有一个 Swift 桥公开了一个 init(delegate:) 方法。可能没有,制作一个超出了这个问题的范围。由于委托(delegate)不是私有(private)的或只读的,您几乎可以肯定地使用我发布的第一个版本。

关于ios - Objective-C 类的 initWithDelegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40454464/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com