私は1つのクラスと1つのView Controllerを持っています。クラスには _delegate RespondsToSelector:selector があります。しかし、メソッド(セレクター)を呼び出していません。以下の私のコードを見た後、何が間違っているのか教えてください。参考までに、このコードは以前は機能していましたが、突然機能しなくなりました。
MyClass.h:
@protocol MyClassDelegate <NSObject>
@optional
-(void) receivedEvent:(TripEvent *) event;
@end
@interface MyClass : NSObject<MyClassEngine>
@property(assign) id<MyClassDelegate> delegate;
@property BOOL delegateOnMainThread;
-(id) initWithDelegate:(id<UbiTripRecorderDelegate>) tripDelegate
onMainThread:(BOOL) onMainThread;
- (void) dispatchDelegate:(SEL)selector
withObject:(id)obj;
MyClass.m には次のコードが含まれています。
#import "MyClass.h"
@implementation MyClass
....
....
-(void) startPlaying {
[self dispatchDelegate:@selector(receivedEvent:) withObject:newEvent];
}
- (void) dispatchDelegate:(SEL)selector withObject:(id)obj {
@try {
if(_delegate && [_delegate respondsToSelector:selector]) {
NSLog(@"I can't come to this point");
}
}
}
また、ビュー コントローラー (MyViewController.h) に次のコードを追加しました。
@interface MyViewController : BaseViewController<MyClassDelegate>
そして最後に MyViewcontroller.m にメソッドを実装しました:
-(void) receivedEvent : (TripEvent *) event {
NSLog(@"I'm called");
}
問題は、if(_delegate && [_delegate RespondsToSelector:selector]) - ロジックが true を返さないことです。私のコードに何か問題がある場合は、誰でもコードをチェックして知らせてもらえますか?