中文回答 oc文件调用接口didDoSomethingdidDoSomething在swift文件中报错No visible interface for MyDelegate declares the selector didDoSomething 如何解决
这个错误通常发生在Objective-C代码尝试调用Swift文件中的方法时。要解决这个问题,你需要确保已经正确地将Swift文件导入Objective-C代码中。
以下是一些可能的解决方案:
-
确保你的Swift文件被正确地导入到Objective-C的头文件中。在Objective-C的头文件中使用
#import "YourProjectName-Swift.h"来导入Swift文件。确保该头文件中包含了你要调用的方法的声明。 -
检查你的Swift文件中的方法是否正确地声明在一个公开的类或协议中。Objective-C只能调用在公开类或协议中声明的方法。
-
确保你的Swift类或协议使用
@objc修饰符进行了标记。这样可以将Swift的方法暴露给Objective-C。
以下是一个示例:
在Swift文件中:
@objc protocol MyDelegate {
func didDoSomething()
}
class MySwiftClass: NSObject {
weak var delegate: MyDelegate?
func callDidDoSomething() {
delegate?.didDoSomething()
}
}
在Objective-C文件中:
#import "YourProjectName-Swift.h"
@interface MyObjectiveCClass() <MyDelegate>
@property (nonatomic, strong) MySwiftClass *swiftObject;
@end
@implementation MyObjectiveCClass
- (instancetype)init {
self = [super init];
if (self) {
self.swiftObject = [[MySwiftClass alloc] init];
self.swiftObject.delegate = self;
}
return self;
}
- (void)didDoSomething {
// 实现你的处理逻辑
}
@end
希望这些解决方案能帮助你解决问题。如果问题仍然存在,请提供更多的代码,以便我们更好地帮助你
原文地址: https://www.cveoy.top/t/topic/hKAK 著作权归作者所有。请勿转载和采集!