从委托对象 - 成夫特 - 从不执行方法

时间:2019-02-01 15:27:41

标签: objective-c swift react-native delegates protocols

在我使用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我。

0 个答案:

没有答案