错误:单击按钮时“将无法识别的选择器发送到实例”

Posted

技术标签:

【中文标题】错误:单击按钮时“将无法识别的选择器发送到实例”【英文标题】:Error: "unrecognized selector sent to instance" when clicking button 【发布时间】:2015-09-17 09:41:23 【问题描述】:

请让我告诉你我在做什么。

    我的窗口有一个 NSView "MainContainer" 在窗口的 laod,我在窗口的 NSView 中添加了一个自定义视图“Options” 客户视图“Options”上有一个名为“Customer Details”的按钮

在客户详细信息上单击>> 当前视图(选项)被删除并加载新视图(客户详细信息视图)。下面给出了我的表现:

NSViewController* cdv = [[CustomerDetailsView alloc] init];
NSView* MainView = [[self view] superview];
[[self view] removeFromSuperview];
[MainView  addSubview:[cdv view]];

现在的问题是最后一个视图(客户详细信息视图)有一些按钮,没有人在工作,我收到一个错误,即“unrecognized selector sent to instance”。请让我知道我该怎么办?

2015-09-17 15:45:37.872 TechHeal[5058:125394] 未启动
2015-09-17 15:46:05.452 TechHeal[5058:125394]-[NSSnapshotContextSignature encryptClick:]:无法识别的选择器发送到实例 0x6080000e5c80
2015-09-17 15:46:05.452 TechHeal[5058:125394]-[NSSnapshotContextSignature encryptClick:]:无法识别的选择器发送到实例 0x6080000e5c80
2015-09-17 15:46:05.464 TechHeal[5058:125394] (
    0 核心基础 0x00007fff9834a03c __exceptionPreprocess + 172
    1 libobjc.A.dylib 0x00007fff8e54c76e objc_exception_throw + 43
    2核心基础0x00007fff9834d0ad-[NSObject(NSObject)不识别选择器:]+205
    3 核心基础 0x00007fff98292e24 ___forwarding___ + 1028
    4 核心基础 0x00007fff98292998 _CF_forwarding_prep_0 + 120
    5 libsystem_trace.dylib 0x00007fff95ef2cd7 _os_activity_initiate + 75
    6 AppKit 0x00007fff9127eeb1-[NSApplication sendAction:to:from:] + 452
    7 AppKit 0x00007fff91294946-[NSControl sendAction:to:] + 86
    8 AppKit 0x00007fff91294862 __26-[NSCell_sendActionFrom:]_block_invoke + 131
    9 libsystem_trace.dylib 0x00007fff95ef2cd7 _os_activity_initiate + 75
    10 AppKit 0x00007fff912947bf-[NSCell_sendActionFrom:] + 144
    11 libsystem_trace.dylib 0x00007fff95ef2cd7 _os_activity_initiate + 75
    12 AppKit 0x00007fff91292cb3-[NSCell tr​​ackMouse:inRect:ofView:untilMouseUp:] + 2821
    13 AppKit 0x00007fff912eb34f -[NSButtonCell tr​​ackMouse:inRect:ofView:untilMouseUp:] + 770
    14 AppKit 0x00007fff91291366-[NSControl mouseDown:] + 714
    15 AppKit 0x00007fff917fb2dc-[NSWindow _reallySendEvent:isDelayedEvent:] + 14125
    16 AppKit 0x00007fff9118ac86 -[NSWindow 发送事件:] + 470
    17 AppKit 0x00007fff91187212-[NSApplication sendEvent:] + 2504
    18 AppKit 0x00007fff910b0b68-[NSApplication 运行] + 711
    19 AppKit 0x00007fff9102d244 NSApplicationMain + 1832
    20 技术治愈 0x00000001000048e2 主要 + 34
    21 技术治愈 0x0000000100001224 开始 + 52
    22 ??? 0x0000000000000003 0x0 + 3
)
(lldb)

PS:如果我直接加载客户详细信息,那么它可以正常工作,但是如果我从另一个视图加载它,那么它就无法正常工作。

【问题讨论】:

发布完整的异常文本。重要的是要知道消息是什么以及它被发送到什么对象。 令人惊讶的是错误已更改为解锁焦点...我添加了屏幕截图。 @***foe 这是一个不同的错误,因此无关紧要。 @***foe 我添加了错误日志和屏幕截图。请看一看。 OK 所以显示调用encryptClick:的代码。 【参考方案1】:

您似乎正在创建一个CustomerDetailsView 控制器,获取它的视图,然后让控制器超出范围。假设encryptClick 在该控制器中实现,问题是当它被调用时,对象已经被释放。消息正在被传递到现在占用那块内存的任何地方。

尝试使 cdv 成为您发布的代码中任何 self 的强大属性,以便它可以随时处理事件。

【讨论】:

十亿..十亿感谢@Phillip Mills。你是超级麦克

以上是关于错误:单击按钮时“将无法识别的选择器发送到实例”的主要内容,如果未能解决你的问题,请参考以下文章

错误:点击 UISegmentedControl 时将无法识别的选择器发送到实例

无按钮上的JOptionPane关闭框架[重复]

如何使按钮内的图标像按钮一样工作(指针事件:无;不起作用)

Android:OnClickListener 在初始加载时无响应?

按钮单击在后续启动时会出现不同的错误

单击子视图上的按钮时执行错误访问