До того, как я использовал NSNotificationEvents, но, как я знаю, я должен был использовать делегат из-за отношений 1: 1 (он будет использоваться только в одном месте в коде).
По сути, я новичок в target-Cи swift (я парень с JavaScript) и код, который я создал после нескольких часов чтения и проверки - он просто не работает, потому что self.delegate не определен.
Я пытаюсь делегировать «событие» из кода Objective-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
Event.m (someMethod выполняется из собственного кода JavaScript React, но это не должно отличаться от того, что язнать)
#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");
}
}
Я хочу, чтобы делегатMethod внутри ViewController был выполнен.
Или, может, я неправильно понял всю идею?Objective-C немного смущает меня.