在我使用NSNotificationEvents之前,但由于1:1关系(应该仅在代码中的一个地方使用),因此我知道我应该使用委托。
基本上,我是对Objective-C和Swift(我是JavaScript专家)的新手,以及我经过数小时的阅读和检查后创建的代码-它只是不起作用,因为self.delegate在未定义中。
我正在尝试将“事件”从目标C代码委托给快速代码。 NSNotificationEvents的工作原理很吸引人,但我想通过协议/委托来实现。
我想,我只是缺少如何准确初始化委托协议。
ProtocolDelegate.h
#import <Foundation/Foundation.h>
@protocol ProtocolDelegate <NSObject>
- (void) delegateMethod: (id)data;
@end
Event.h
#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>
#import "ProtocolDelegate.h"
@interface Event : NSObject <RCTBridgeModule, ProtocolDelegate>
@property(nonatomic, weak)id <ProtocolDelegate> delegate;
@end
事件.m
(someMethod是从JavaScript React-native代码执行的,但与我所知道的没什么区别)
#import "Event.h"
@implementation Event
RCT_EXPORT_MODULE(Events);
RCT_EXPORT_METHOD(someMethod: (NSString*)parameter) {
NSDictionary* data = @{@"parameter": parameter};
NSLog(@"This I can see");
if ([self.delegate respondsToSelector:@selector(delegateMethod:)]) {
NSLog(@"This I can not see");
[self.delegate delegateMethod:data];
}
}
ViewController.swift
class ViewController: UIViewController, ProtocolDelegate {
// Xcode has automatically created this method
func delegateMethod(_ data: Any!) {
os_log("ON AUCTION");
}
}
我想在ViewController中执行委托方法。
或者,也许我得到的整体思路错了吗?目标C是有点confising我。