我正在为CS193P(Fall 2010)(图形计算器)的家庭作业#3工作。我已成功实现委托以传递表达式和比例,现在我正在尝试向委托中添加一个额外的字段,如earlier question中所述。
这是错误:
>2011-09-27 20:27:24.076 Graphing Calculator[8892:f803] -[GraphViewController errorForGraphView:]: unrecognized selector sent to instance 0x6c32d10
2011-09-27 20:27:24.077 Graphing Calculator[8892:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[GraphViewController errorForGraphView:]: unrecognized selector sent to instance 0x6c32d10'
*** First throw call stack:
(0x13bb062 0x154cd0a 0x13bccfd 0x13bd093 0x13220d9 0x1321cf2 0x8876 0x8d83 0x5ca23 0x1d97c13 0x1daa129 0x1cca15d 0x1da9fce 0x1d97ced 0x1d9e27d 0x1d97d13 0x1da1c58 0x1d27fb5 0x1d29ea2 0x1d2957c 0x138f9de 0x1326680 0x12f2516 0x12f1dd4 0x12f1ceb 0x12a4879 0x12a493e 0x1e38b 0x287f 0x27d5 0x1)
terminate called throwing an exceptionCurrent language: auto; currently objective-c
(gdb)
以下是SIGABRT显示的行:
BOOL error = [self.delegate errorForGraphView:self];
可以在GitHub上的Graphing Calculator项目的GraphView.m中找到。我正在使用ARC和iOS 5测试版。
更新
我应该补充一点,在CalculatorBrain类中定义了一个errorForGraphView方法。我缺少什么(我对代表的理解是初生的)导致每个人都在GraphViewController中查找方法?我应该如何将信息从CalculatorBrain传递给GraphView?
答案 0 :(得分:1)
所以就像他们说的那样,因为没有假定的方法定义,但这是确保方法定义的一种非常简单的方法:) 在任何调用的类中[self.delegate errorForGraphView:self];创建协议
@protocol Whatevertheclassis <NSObject>
-(BOOL)errorForGraphView:self];
@end
然后声明你的代表
@property(nonatomic, retain) id <Whatevertheclassis> delegate;
然后合成代理
@sythesize delegate;
然后在创建whateverclassthisis的类中简单地将委托设置为self并实现Whatevertheclassis协议并编写方法:) 当您在实现协议后键入方法的标题时,该函数的其余部分应该显示您正确执行的意义:)
答案 1 :(得分:0)
好吧,如果你看看GraphViewController它没有你指定的方法,所以我建议你研究为什么你把它设置为委托......如果它是正确的委托人,那么实施有问题的方法
答案 2 :(得分:0)
该消息的含义正是它所说的:GraphViewController对象是&#34;发送的&#34; &#34; errorForGraphView:&#34; &#34;消息&#34; (即&#34; errorForGraphView:&#34;使用GraphViewController对象指针调用。
要么你有错误的指针(也许你应该有一个GraphView对象?),或者你只是忘了实现errorForGraphView :(或者当你实现它时拼写错误)。