此类型中有很多与iphone相关的问题。我知道;我读了它们,直到我没有学到任何新东西,都是为了避免(a)发布和(b)看起来强大的绿色。
@interface CommonCostingClass : NSObject {
}
-(void) theCCC;
@end
这就是整件事。尽可能少。我甚至使用了UIView而不是NSObject。在CommonCostingClass.m里面我有
#import "CommonCostingClass.h"
@implementation CommonCostingClass
-(void) theCCC {
// blah-blah
}
同样,这就是全部。在我编写的myViewController里面
#import "CommonCostingClass.h"
- (BOOL) textFieldShouldReturn:(UITextField *)textField {
if (textField.tag == 4) {
[(CommonCostingClass *) self.view theCCC]; // <-ka-boom
}
// other stuff
}
演员的存在/不存在没有区别。
self.view生成
* - [UIView theCCC]:无法识别的选择器发送到实例0x5d3dd20
2010-07-20 11:30:54.732 Wind17 [3233:207]
* 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'*** - [UIView theCCC]:无法识别的选择器发送到实例0x5d3dd20'
self生成相同的消息,将“myViewController”替换为“UIView”。
清除所有目标无效。
我知道UIView和myView Controller都没有“看到”方法“theCCC”。
我不知道怎么说,“它就在那里!它就在那里!”
感谢您的帮助。总有一天,这种情况会很有趣,而不是令人尴尬。
答案 0 :(得分:2)
在评论之后,在这一行
[(CommonCostingClass *) self.view theCCC];
你正试图在self.view上执行-CCC方法。 self.view是一个UIView。
如果您希望自定义类是现在的NSObject子类,则需要在视图控制器中创建并初始化CommonCostingClass对象,然后在其上调用-CCC。
编辑无法识别的选择器:无法识别的选择器意味着您正在调用未实现该方法的类的方法。在您的情况下,您在theCCC
上致电UIView
,但未实施或了解theCCC
方法。
答案 1 :(得分:1)
这里至少有两个问题
CommonCostingClass
用作视图,则需要子类UIView
。在您发布的代码中,CommonCostingClass
是NSObject
的子类。这可能是一个错字,或者它可能表明你在这里尝试做的更为根本的问题。view
的{{1}}属性设置为UIViewController
的实例。最简单的方法是using Interface Builder。 答案 2 :(得分:1)
好像你真的想要
+(void) theCCC;
(注意“+”)这是一个类方法,然后你只需要调用
[CommonCostingClass theCCC]
“无法识别的选择器”确实没有神秘感。这意味着括号中的第一件事(在你的情况下是self.view)不理解(有方法)theCC。为什么会这样呢?
您已经声明了一种类,但为了使用该类,您必须在某处拥有一个实例。那你怎么认为CommonCostingClass的实例曾经被创造过?