コードは機能しますが、ビューのデータソース デリゲートのセッターを誰がどこで呼び出しているのかわかりません。そのコードを呼び出すとすべてが機能する理由を理解しています。誰が呼び出しを行ったか/どこでそれが発生したかを知りたいだけです。ビューのヘッダーは次のようになります。コードの最後の行が重要です。
@class GraphView;
@protocol GraphViewDataSource
-(float)YValueforXValue:(float)xValue;
@end
@interface GraphView : UIView
@property (nonatomic) CGFloat scale;
@property (nonatomic) CGPoint graphOrigin;
@property (nonatomic, weak) IBOutlet id <GraphViewDataSource> dataSource;
@end
そして、プロトコルに準拠するView Controller:
@interface GraphViewController () <GraphViewDataSource>
@property (nonatomic, weak) IBOutlet GraphView *graphview;
@end
@implementation GraphViewController
@synthesize graphview = _graphview;
@synthesize program = _program;
-(void)setGraphview:(GraphView *)graphview {
_graphview = graphview;
self.graphview.dataSource = self;
}
関連性がないため、必要なプロトコルメソッドなどを除外しました。私が知りたいのは、誰が上記のsetGraphView
メソッドを呼び出しているかです。残念ながら、ブレークポイントから助けを得ることができませんでした (ブレークポイントが呼び出されていることは別として)。
また、そのデリゲートは、ビュー内の次のコードによって最初に参照されます。
for (CGFloat thisPointViewXValue=self.bounds.origin.x; thisPointViewXValue<=self.bounds.size.width; thisPointViewXValue +=1/self.contentScaleFactor)
{
if (FirstPoint) {
CGFloat firstpointGraphXValue = [self convertViewXValueToGraphXValue:thisPointViewXValue];
CGFloat firstpointGraphYValue = [self.dataSource YValueforXValue:firstpointGraphXValue];
CGFloat firstpointViewYValue = [self convertGraphYValueToViewY:firstpointGraphYValue];
CGContextMoveToPoint(context, thisPointViewXValue, firstpointViewYValue);
FirstPoint = NO;
}
CGFloat thisPointGraphXValue = [self convertViewXValueToGraphXValue:thisPointViewXValue];
CGFloat thisPointGraphYValue = [self.dataSource YValueforXValue:thisPointGraphXValue];
CGFloat thisPointViewYValue = [self convertGraphYValueToViewY:thisPointGraphYValue];
CGContextAddLineToPoint(context, thisPointViewXValue, thisPointViewYValue);
}
それはそれが起こる場所ですか?