Question

I have looked at all the other questions with the same problem but I cannot seem to get my heard around it. I am pretty sure I have done everything correctly as this is not my first time using delegates.

//PDFView.h
@class PDFView;

@protocol PDFViewDelegate <NSObject>
-(void)trialwithPOints:(PDFView*)pdfview;
@end

@interface PDFView : UIView
@property (nonatomic, weak) id <PDFViewDelegate> delegate;

In the implementation file i am trying to call the delegate method from touchesMoved delegate of view

//PDFView.m
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.delegate trialwithPOints:self];
}

The class where the delegate method is implemented

//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");
}

So this is how i have written my delegate and somehow the delegate is nil and the delegate method is never called.

At the moment I am not doing anything with the delegate, I just want to see it working.

Any advices on this would be highly appreciated.

Was it helpful?

Solution

I think it is because you did not hold the reference to the instance of the delegate, and it got released because it is declared weak. You might be doing this:

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

which you should fix to something like:

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

where _points is instance variable.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top