我有一个 Objective C 类,它的方法如下所示:
@class Client;
@protocol ClientDelegate <NSObject>
@optional
-(void) receivedMessageFromClient : (id) message;
@end
@interface Client : NSObject
+(id) setup;
@property(nonatomic, strong) id <ClientDelegate> clientDelegate;
// more method declarations below
我在我的 Swift 类中实现 ClientDelegate,如下所示:
class HomeViewController: UIViewController, ClientDelegate {
var client : AnyObject?
var delegate: ClientDelegate?
override func viewDidLoad() {
super.viewDidLoad()
client = Client.setup() as! Client
client.clientDelegate = self
}
func receivedMessageFromClient(message: AnyObject) {
print("Message recieved: \(message)")
}
}
这给了我一个编译错误:
无法分配给属性:“自我”是不可变的
当我删除线条时
client = Client.setup() as! Client
client.clientDelegate = self
代码编译并调用 Client 类中的方法,该类依次向 发送消息receivedMessageFromClient
,但未调用该方法HomeViewController
。除了将 self 指定为委托之外,似乎一切都已设置好。