将委托分配给我的PieChartView时发送到实例的无法识别的选择器

时间:2012-10-16 08:54:25

标签: objective-c ios

您好我已搜索并搜索,然后我决定将其发布在此处 - 这个问题对您来说可能很愚蠢,但它已经花了我一天的时间:(

所以我试图使用XYPieChart绘制一些饼图,这里有一些来自XYPieChart的代码:

XYPieChart.h

@class XYPieChart;
@protocol XYPieChartDataSource <NSObject>
@required
- (NSUInteger)numberOfSlicesInPieChart:(XYPieChart *)pieChart;
- (CGFloat)pieChart:(XYPieChart *)pieChart valueForSliceAtIndex:(NSUInteger)index;
@optional
- (UIColor *)pieChart:(XYPieChart *)pieChart colorForSliceAtIndex:(NSUInteger)index;
- (NSString *)pieChart:(XYPieChart *)pieChart textForSliceAtIndex:(NSUInteger)index;
@end

@protocol XYPieChartDelegate <NSObject>
@optional
- (void)pieChart:(XYPieChart *)pieChart willSelectSliceAtIndex:(NSUInteger)index;
- (void)pieChart:(XYPieChart *)pieChart didSelectSliceAtIndex:(NSUInteger)index;
- (void)pieChart:(XYPieChart *)pieChart willDeselectSliceAtIndex:(NSUInteger)index;
- (void)pieChart:(XYPieChart *)pieChart didDeselectSliceAtIndex:(NSUInteger)index;
@end

XYPieChart.m

@synthesize dataSource = _dataSource;
@synthesize delegate = _delegate;

然后在我自己的视图中控制器XYPieChartViewTestViewController.h

#import <UIKit/UIKit.h>
#import "XYPieChart.h"

@interface XYPieChartViewTestViewController : UIViewController <XYPieChartDelegate,      XYPieChartDataSource>
@property (weak, nonatomic) IBOutlet XYPieChart *MyPieCharts;
@end

和XYPieChartViewTestViewController.m

#import "XYPieChartViewTestViewController.h"

@interface XYPieChartViewTestViewController ()
@end
@implementation XYPieChartViewTestViewController
@synthesize MyPieCharts = _MyPieCharts;

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

    [_MyPieCharts setDelegate:self];
}

但是在执行[_MyPieCharts setDelegate:self];时,有一个转储:

2012-10-16 10:33:53.100 XYPieChartViewTest [3859:11303] - [UIView setDelegate:]:无法识别的选择器发送到实例0x9040680 * 第一次抛出调用堆栈: libc ++ abi.dylib:terminate调用抛出异常

如果我在“[_ MyPieCharts setDelegate:self];”和PO self._MyPieCharts.delegate这一行放置一个断点,它会说:

po self.MyPieCharts.delegate 错误:执行被中断,原因:尝试取消引用无效的ObjC对象或向其发送无法识别的选择器。 该过程已在执行前返回到该状态。

我上传了项目here,因为我无法发布截屏。

这是否意味着self.MyPieCharts.delegate未初始化?你知道我该怎么办吗?

非常感谢!

2 个答案:

答案 0 :(得分:2)

似乎MyPieCharts未在Interface Builder中连接。

答案 1 :(得分:0)

尝试将委托设置为:

[_MyPieCharts setDelegate:XYPieChartDelegate];