委托方法没有被调用

时间:2013-08-01 01:03:22

标签: objective-c ios6 delegates xcode4.5

我已经查看了所有其他问题同样的问题,但我似乎无法听到它的声音。我很确定我已经完成了所有事情,因为这不是我第一次使用代表。

//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而且委托方法永远不会被调用。

目前我没有与代表做任何事情,我只是希望看到它有效。

对此的任何建议都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

我认为这是因为你没有持有对委托实例的引用,因为它被声明为weak而被释放了。你可能会这样做:

pdfView.delegate = [[points alloc] init];

你应该修复像:

_points = [[points alloc] init];
pdfView.delegate = _points;

其中_points是实例变量。