Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSCFString还是UIViewController?_Objective C_Cocoa Touch_Uiviewcontroller_Nsstring_Uitextfield - Fatal编程技术网

Objective c NSCFString还是UIViewController?

Objective c NSCFString还是UIViewController?,objective-c,cocoa-touch,uiviewcontroller,nsstring,uitextfield,Objective C,Cocoa Touch,Uiviewcontroller,Nsstring,Uitextfield,我使用的UIViewController(当然是一个子类)带有一个文本字段,当内容发生更改时,该字段会发送一个操作(到ViewController的ContentsAnged:selector)。它是通过将contentsChanged:发送到IB中的文件所有者来完成的。 但当我测试它时,它会说:“-[NSCFString contentsChanged:]:未识别的选择器发送到实例”,实例指针是十六进制的。 我猜想,由于某种原因,视图控制器被移动到另一个指针,并且在那里分配了一个字符串,但我不

我使用的UIViewController(当然是一个子类)带有一个文本字段,当内容发生更改时,该字段会发送一个操作(到ViewController的ContentsAnged:selector)。它是通过将contentsChanged:发送到IB中的文件所有者来完成的。 但当我测试它时,它会说:“-[NSCFString contentsChanged:]:未识别的选择器发送到实例”,实例指针是十六进制的。 我猜想,由于某种原因,视图控制器被移动到另一个指针,并且在那里分配了一个字符串,但我不明白为什么。
有什么想法吗?

如果不看代码,看起来您是在文本字段的文本上调用contentsChanged:而不是UIViewController子类。

如果不看代码,看起来您是在文本字段的文本上调用contentsChanged:,而不是UIViewController子类。

我对UIViewController子类和这段无害代码有完全相同的问题:

- (void)viewDidLoad
{
    NSLog(@"%@ %s %@", [self class], _cmd, answerButton);
    [self.answerButton addTarget:self
             action:@selector(getAnswerToQuestion:) 
       forControlEvents:UIControlEventTouchUpInside];
}
是,应答按钮已连接(它是一个IBOutlet),是,
-(iAction)getAnswerToQuestion:(id)发送方
是一种合适的方法,但没有乐趣。当我注释掉viewDidLoad并在IB中建立连接时,它在崩溃报告中显示失败发生在[UIControl sendAction:to:forEvent:]上,导致

objc_msgSend()选择器名称:性能选择器:withObject:withObject:

我无法证明这一点,但我怀疑UIKit中的某个地方存在一个bug,它将绑定和addTarget转换为对performSelector的调用。我计划先升级到iOS 4.01,看看这能否解决问题

更新: 我不确定我的问题是否真的与Alexandre Cassagne的问题相似,但为了分享信息,我现在还不会删除它。当我开始制作一个示例项目以提交一个bug报告时,我解决了我的问题。是的,点击madeanswerbutton调用getAnswerToQuestion:就像一个好的小物体,一切都很好

示例项目的子类UIViewController与实际项目的UIViewController之间的区别在于,第一个类还充当xib文件的所有者,而第二个类只是几个视图控制器中的一个。当我将getAnswerToQuestion:移动到实际项目中的文件所有者时,单击answerButton按预期工作。因此,我的直觉是,从绑定到performSelector的翻译过程中的某个地方存在问题,这一点并不遥远:问题在于响应者链。我认为以编程方式或在IB中建立操作目标链接将绕过响应者链,但显然不是这样


当然,现在的问题是Alexandre在他的问题中指出,他的contentsAnged:method已经是文件所有者的一部分,这使得我的回答与问题无关。

我对UIViewController的子类和这段无害的代码有着完全相同的问题:

- (void)viewDidLoad
{
    NSLog(@"%@ %s %@", [self class], _cmd, answerButton);
    [self.answerButton addTarget:self
             action:@selector(getAnswerToQuestion:) 
       forControlEvents:UIControlEventTouchUpInside];
}
是,应答按钮已连接(它是一个IBOutlet),是,
-(iAction)getAnswerToQuestion:(id)发送方
是一种合适的方法,但没有乐趣。当我注释掉viewDidLoad并在IB中建立连接时,它在崩溃报告中显示失败发生在[UIControl sendAction:to:forEvent:]上,导致

objc_msgSend()选择器名称:性能选择器:withObject:withObject:

我无法证明这一点,但我怀疑UIKit中的某个地方存在一个bug,它将绑定和addTarget转换为对performSelector的调用。我计划先升级到iOS 4.01,看看这能否解决问题

更新: 我不确定我的问题是否真的与Alexandre Cassagne的问题相似,但为了分享信息,我现在还不会删除它。当我开始制作一个示例项目以提交一个bug报告时,我解决了我的问题。是的,点击madeanswerbutton调用getAnswerToQuestion:就像一个好的小物体,一切都很好

示例项目的子类UIViewController与实际项目的UIViewController之间的区别在于,第一个类还充当xib文件的所有者,而第二个类只是几个视图控制器中的一个。当我将getAnswerToQuestion:移动到实际项目中的文件所有者时,单击answerButton按预期工作。因此,我的直觉是,从绑定到performSelector的翻译过程中的某个地方存在问题,这一点并不遥远:问题在于响应者链。我认为以编程方式或在IB中建立操作目标链接将绕过响应者链,但显然不是这样


当然,现在的问题是,Alexandre在他的问题中指出,他的contentsChanged:method已经是文件所有者的一部分,这使得我的回答与这个问题无关。

听起来像是一个经典案例。阅读NSZombieEnabled,了解如何追踪此类问题。

听起来像是一个经典案例。在NSZOMPEBEnter上读取如何跟踪这类问题。

< P>您应该考虑使用UITExtFieldAt委托协议在UITExtField字段的文本发生更改时调用。我没有看过,但这是我要做的事。

你应该考虑使用uITExtFieldAt委托协议在UITExtField字段的文本发生更改时调用。我还没有看过,但这是我想马上做的事情。

不,我可以向您展示我给它一个目标的代码:[InputExtField addTarget:self action:@selector(contentsChanged:)forControlEvents:UIControlEventEditingChanged];它没有理由调用文本!不,我可以向您展示我给它一个目标的代码:[InputExtField addTarget:self action:@selector(contentsChanged:)forControlEvents:UIControlEventEditingChanged];它没有理由调用文本!谢谢,我要升级到4.0.1,看看能不能用。如果你在我之前做过,请让我在这里发布消息,告诉我它是否有效。我刚刚升级,很抱歉告诉你我失败了