我已经查看了所有其他问题同样的问题,但我似乎无法听到它的声音。我很确定我已经完成了所有事情,因为这不是我第一次使用代表。
//PDFView.h
@class PDFView;
@protocol PDFViewDelegate <NSObject>
-(void)trialwithPOints:(PDFView*)pdfview;
@end
@interface PDFView : UIView
@property (nonatomic, weak) id <PDFViewDelegate> delegate;
在实现文件中,我试图从touchesMoved视图委托中调用委托方法
//PDFView.m
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.delegate trialwithPOints:self];
}
实施委托方法的类
//points.h
#import "PDFView.h"
@interface points : NSObject <PDFViewDelegate>
//points.m
//this is where the delegate is set
- (id)init
{
if ((self = [super init]))
{
pdfView = [[PDFView alloc]init];
pdfView.delegate = self;
}
return self;
}
-(void)trialwithPOints:(PDFView *)pdf
{
NSLog(@"THE DELEGATE METHOD CALLED TO PASS THE POINTS TO THE CLIENT");
}
所以这就是我编写代理的方式,不知何故委托是nil而且委托方法永远不会被调用。
目前我没有与代表做任何事情,我只是希望看到它有效。
对此的任何建议都将受到高度赞赏。
答案 0 :(得分:1)
我认为这是因为你没有持有对委托实例的引用,因为它被声明为weak
而被释放了。你可能会这样做:
pdfView.delegate = [[points alloc] init];
你应该修复像:
_points = [[points alloc] init];
pdfView.delegate = _points;
其中_points
是实例变量。