我有两个文件
Question.m
Question.h
这两个是由Objective-C
编写的 MainView.swift
这是由Swift编写的
问题类有代表
@interface Question : NSObject{
id delegate;// put MainViewController here
- (void)trythisfunction{
[delegate test] // compiler doesn't find this method.
}
}
我创建了类实例并将MainViewController作为MainViewController.swift中Question的委托
class MainViewController: UIViewController {
override func viewDidLoad(){
q = Question()
q.delegate = self // put self in delegate
}
func test(){
NSLog("test is OK")
}
}
然而编译器发现错误[委托测试] Question.m:169:19:选择器'test:'
没有已知的实例方法我该如何解决这个问题?
答案 0 :(得分:1)
您需要做一些更改。
下面的类声明不能编译,因为你不能在interface
中声明变量。
@interface Question : NSObject{
id delegate;
- (void)trythisfunction {
[delegate test]
}
}
我已经修复了上面的课,现在看起来像这样,
# Question.h file
#import <Foundation/Foundation.h>
@interface Question : NSObject
@property (nonatomic, strong) id delegate;
@end
以下是类
的实现 # Question.m file
#import "Question.h"
@implementation Question
@synthesize delegate;
- (void)trythisfunction{
[delegate test];
}
@end
由于我们正在整合此swift,因此我们需要一个内容类似的Bridging Header。
#import "Test.h"
最后在你的swift课程中,你可以导入这个课程
import UIKit
class MainViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let q = Test()
q.delegate = self
}
func test(){
NSLog("test is OK")
}
}
上面的代码就像魅力一样。