Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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中的错误_Objective C_Selector_Unrecognized Selector - Fatal编程技术网

&引用;已将无法识别的选择器发送到实例";Objective-C中的错误

&引用;已将无法识别的选择器发送到实例";Objective-C中的错误,objective-c,selector,unrecognized-selector,Objective C,Selector,Unrecognized Selector,我创建了一个按钮并为其添加了一个操作,但一旦它被调用,我就得到了以下错误: -[NSCFDictionary numberButtonClick:]: unrecognized selector sent to instance 0x3d03ac0 2010-03-16 22:23:58.811 Money[8056:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reaso

我创建了一个按钮并为其添加了一个操作,但一旦它被调用,我就得到了以下错误:

-[NSCFDictionary numberButtonClick:]: unrecognized selector sent to instance
 0x3d03ac0 2010-03-16 22:23:58.811
 Money[8056:207] *** Terminating app
 due to uncaught exception
 'NSInvalidArgumentException', reason:'*** -[NSCFDictionary numberButtonClick:]:  unrecognized selector sent to instance 0x3d03ac0'
这是我的代码:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        UIButton *numberButton = [UIButton buttonWithType:UIButtonTypeCustom];        
        numberButton.frame = CGRectMake(10, 435, 46, 38);
        [numberButton setImage:[UIImage imageNamed:@"one.png"] forState:UIControlStateNormal];
        [numberButton addTarget:self action:@selector(numberButtonClick:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview: numberButton]; 
    }
return self;
}

-(IBAction)numberButtonClick:(id)sender{
    NSLog(@"---");
}

看起来您没有正确地管理视图控制器的内存,并且它在某个点被释放-这导致
numberButtonClicked:
方法被发送到另一个对象,该对象现在正在占用视图控制器以前占用的内存


确保您正确地保留/释放了视图控制器。

对于那些像我一样通过谷歌来到这里的人来说,这可能更多地涉及到Xcode 4.2+/iOS 5+以及ARC。我遇到了相同的错误“发送到实例的选择器无法识别”。在我的例子中,我将UIButton的目标操作设置为将其自身作为发送方参数传递,但后来意识到我不需要它,并在代码中删除了它。比如说:

- (IBAction)buttonPressed:(UIButton *)sender {
更改为:

- (IBAction)buttonPressed {

右键单击有问题的UIButton显示“内部润色”事件与view Controller buttonPressed:方法关联。删除此项并将其重新分配给修改后的方法非常有效。

这是谷歌针对此问题的最佳答案,但我有一个不同的原因/结果-我想我应该加上我的两分钱,以防其他人偶然发现此问题

就在今天早上,我也遇到了类似的问题。我发现,如果右键单击给出问题的UI项,您可以看到已创建了哪些连接。在我的情况下,我有一个按钮连接到两个行动。我删除了右键菜单中的操作,并重新布线,我的问题得到了解决


因此,请确保您的操作连接正确。

我认为您应该使用void,而不是返回类型中的iAction。因为您以编程方式定义了一个按钮

在我的例子中,我使用的是NSNotificationCenter,试图使用不带参数的选择器,但添加了冒号。移除冒号修复了问题

使用选择器名称时,如果没有参数,则不要使用尾随冒号。如果有一个参数,则使用一个尾随冒号。如果有多个参数,则必须为每个参数命名这些参数,并在后面加上冒号


请参见Adam Rosenfield的回答:

如果不在interface builder中设置视图的“类”,也可能发生这种情况。

我正在回复Leonard Challis,因为我也使用了斯坦福iOS类C193P,就像用户“oli206”一样

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:

问题是,我将计算器上的“回车”按钮连接了两次,一位朋友指出,当我右键单击“回车”按钮时,对故事板上的按钮进行检查时,发现“内部润色”属性上有两个条目。删除“已发送事件”中的两个“内部修补”中的一个解决了问题


这表明问题是由两个发送事件触发的(对于作业1计算器演练中的C193P视频类),其中一个事件导致异常。

我也有类似的问题,但对我来说,解决方案略有不同。在我的例子中,我使用了一个类别来扩展一个现有的类(UIImage提供了一些调整大小的功能——如果您感兴趣,请参见此),但忘记了将*.m文件添加到构建目标中。愚蠢的错误,但当它发生在哪里时并不总是显而易见的。我认为它值得分享…

如果不将ViewController分配给中的ViewControllerScene,则可能会发生这种情况
接口生成器。因此ViewController.m未连接到任何场景。

包括我的共享。我在这个问题上陷入了一段时间,直到我意识到我已经创建了一个残疾人项目。在该选项上快速设置为“是”解决了我的问题。

另一个非常愚蠢的原因是在接口(.h)中定义了选择器,但在实现(.m)中没有定义选择器(即键入)

要添加到列表中的另一个原因/解决方案。这是由iOS6.0(和/或编程错误)引起的。在旧版本中,如果参数类型匹配,选择器将匹配,但在iOS 6.0中,我在以前的工作代码中遇到了参数名称不正确的崩溃

我在做类似的事情

[objectName methodName:@"somestring" lat:latValue lng:lngValue];
但在定义中(包括.h和.m),我有

这在iOS5上运行良好,但在ios6上却不行,即使是部署到不同设备上的完全相同的构建


无论如何,我不明白为什么编译器不能告诉我这一点-问题就在于此。

当您想将ControllerA中的属性设置为自定义ControllerB类中的公共属性,但尚未设置“自定义类”时,也可能会发生这种情况在故事板中的身份检查器内部。

另一种可能的解决方案:在链接器参数中添加“-ObjC”

详细解释如下:


我认为要点是:如果类别是在静态链接的库中定义的,那么链接器不够聪明,无法链接类别方法。上面的标志使链接器链接到所有的objective C类和类别中,而不仅仅是它认为需要基于对源代码的分析来链接的类和类别。(请随意调整或更正该答案。我知道链接语言,所以我只是在这里鹦鹉学舌)。

在我的情况下,函数不需要参数,但按钮被配置为发送一个导致错误的参数。要解决这个问题,我必须重新连接事件处理程序

以下是我的功能:

请注意,它不包含任何参数

这是我的按钮配置的图像(右键单击按钮查看):

请注意,有3个事件处理程序

为了解决这个问题,我必须删除每个事件项,因为其中一个事件项正在向enterPressed函数发送对自身的引用。要删除这些项目,我单击每个项目名称旁边的小x图标,直到没有显示任何项目

接下来,我必须将按钮重新连接到事件。去
(viod) methodName:(NSString *) latitude:(double)latitude longitude:(double)longitude;
NSArray* array = [[NSArray alloc] init];
[(NSDictionary*)array objectForKey: key]; // array is not a dictionary, hence exception
action:@selector(xxxButtonClick:)

or (as in my case)

action:NSSelectorFromString([[NSString alloc] initWithFormat:@"%@BtnTui:", name.lowercaseString])
- (void)doneBtnTui:(id)sender {
  NSLog(@"Done Button - with sender");
}
 or
- (void)doneBtnTui {
  NSLog(@"Done Button - no sender");
}
[self.refreshControl addTarget:self action:@selector(yourRefreshMethod:) forControlEvents:UIControlEventValueChanged];
- (void)yourRefreshMethod{
    (your code here)
}
- (void)yourRefreshMethod:(id)sender{
    (your code here)
}
- (void)yourRefreshMethodWithSender:(id)sender{
    [self yourRefreshMethod];
}
[self.refreshControl addTarget:self action:@selector(yourRefreshMethodWithSender:) forControlEvents:UIControlEventValueChanged];
var trashBarButtonItem: UIBarButtonItem {
    return UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "newButtonClicked")
}

func newButtonClicked(barButtonItem: UIBarButtonItem) {
    NSLog("A bar button item on the default toolbar was clicked: \(barButtonItem).")
}
var trashBarButtonItem: UIBarButtonItem {
        return UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "newButtonClicked:")
    }

    func newButtonClicked(barButtonItem: UIBarButtonItem) {
        NSLog("A bar button item on the default toolbar was clicked: \(barButtonItem).")
    }
set.Bind (somethingOutlet).For ("TouchUpInside").To(vm => vm.Something);
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[NameOfYourApp.NameOfYourClass nameOfCorruptConnection:]:
unrecognized selector sent to instance 0x7f97a48bb000'
[UITableViewCellContentView image]: unrecognized selector sent to instance
[__NSDictionaryI objectAtIndex:] unrecognized selector sent to instance
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TestApp.MyViewController viewDidLoad:]: unrecognized selector sent to instance 0xDABCDD'
-[NSObject(NSObject) doesNotRecognizeSelector:]