我创建了一个按钮,并为其添加了一个动作,但是一旦调用它,我就收到了这个错误:
-[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'
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
- (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(@"---");
}
Run Code Online (Sandbox Code Playgroud) 当我尝试创建自己的会话对象NSURLSession()并请求一个url时,我得到一个无法识别的选择器异常,但是当我使用共享会话时,NSURLSession.sharedSession()一切正常.怎么会?
var url = NSURL(string: "http:/www.google.com")
if url != nil {
//throws unrecognized selector when dataTaskWithURL is called
let session=NSURLSession()
session.dataTaskWithURL(url!)
//works
let sharedSession=NSURLSession.sharedSession()
sharedSession.dataTaskWithURL(url!)
}
Run Code Online (Sandbox Code Playgroud) -(void)transformObjects:(NSMutableArray*)array key:(NSString*)key
{
NSMutableArray* archiveArray = [[NSMutableArray alloc]initWithCapacity:array.count];
for (Furniture *furniture in array) {
// The error occurs on the line below
NSData *furnitureEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:furniture];
[archiveArray addObject:furnitureEncodedObject];
}
NSUserDefaults *userData = [NSUserDefaults standardUserDefaults];
[userData setObject:archiveArray forKey:key];
}
Run Code Online (Sandbox Code Playgroud)
错误日志:
2014-03-04 10:55:27.881 AppName[10641:60b] -[Furniture encodeWithCoder:]: unrecognized selector sent to instance 0x15d43350
Run Code Online (Sandbox Code Playgroud)
我不知道为什么在尝试存档对象时会出现"无法识别的选择器发送到实例".
首先,我看到有很多关于"无法识别的选择器发送到实例"的问题.
我见过很少,但没有看到访问类别属性中定义的...
我在UILabel上有一个属性的类别.
确定了getter和setter.
实际上我在2个不同的类别中拥有相同的属性(对于2个不同的类别:UIButton和UILabel).
问题是我可以为UIButton访问此属性,但不能访问UILabel.
一旦我尝试访问UILabel(文本)类别中的任何方法/属性,它就会删除" - [UILabel test]:无法识别的选择器发送到实例0x4e539f0"异常.
两个类别文件都已导入.
我不知道是什么问题.
这是一些代码:
// UILabel+text.h
@interface UILabel (text)
- (void)test;
@end
// UILabel+text.m
@implementation UILabel (text)
- (void)test {
NSLog(@"test");
}
@end
// UIButton+text.h
@interface UIButton (text)
- (void)test;
@end
// UIButton+text.m
@implementation UIButton (text)
- (void)test {
NSLog(@"test");// works
}
@end
// Usage (in UIViewController class) - both elements are defined in XIB
[self.button test];// works
[self.label test];// exception
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
我不知道可能出现的问题......
谢谢.
迈克尔.
iphone objective-c unrecognized-selector objective-c-category
我收到#560 NSInvalidArgumentException错误,如下所示;
-[_NSObserverList setCursorPosition:]: unrecognized selector sent to instance 0x1702a6ea0
CoreFoundation ___exceptionPreprocess
Fatal Exception: NSInvalidArgumentException
0 CoreFoundation 0x1854f21c0 __exceptionPreprocess
1 libobjc.A.dylib 0x183f2c55c objc_exception_throw
2 CoreFoundation 0x1854f9278 __methodDescriptionForSelector
3 CoreFoundation 0x1854f6278 ___forwarding___
4 CoreFoundation 0x1853f059c _CF_forwarding_prep_0
5 UIKit 0x18b830418 -[_UIKeyboardTextSelectionController selectTextWithGranularity:atPoint:executionContext:]
6 UIKit 0x18b8304b0 -[_UIKeyboardTextSelectionController selectTextWithGranularity:atPoint:completionHandler:]
7 UIKit 0x18b895928 -[_UIKeyboardBasedNonEditableTextSelectionGestureController oneFingerForcePan:]
8 UIKit 0x18b91b59c -[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:]
9 UIKit 0x18b91eca4 _UIGestureRecognizerSendTargetActions
10 UIKit 0x18b4e02e8 _UIGestureRecognizerSendActions
11 UIKit 0x18b37e828 -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:]
12 UIKit 0x18b90ece8 _UIGestureEnvironmentUpdate
13 CoreFoundation 0x18549f7dc __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__
14 CoreFoundation …Run Code Online (Sandbox Code Playgroud) 我有一个分布在库中的代码,如下所示:
if ([[NSString class] instancesRespondToSelector: @selector(JSONValue)]) {
NSString *jsonString = [[[NSString alloc] initWithData: jsonData encoding: NSUTF8StringEncoding] autorelease];
dict = [jsonString performSelector: @selector(JSONValue)];
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因-[__NSCFString JSONValue]: unrecognized selector sent to instance,performSelector:在调用方法时会抛出异常.这是在我编写的库中分发的代码,但我自己无法重现或调试它.相反,第三方报告此问题.在什么条件下可以instancesRespondToSelector:实际调用方法使用performSelector:抛出异常?
编辑 有一个案例可以解释为什么会发生这种情况,但它没有意义.如果开发人员要做这样的事情:
@implementation NSString (OurHappyCategory)
+ (BOOL)instancesRespondToSelector:(SEL)aSelector
{
return YES;
}
@end
Run Code Online (Sandbox Code Playgroud)
它可以解释为什么代码正在执行,但它当然是一件非常糟糕的事情.有没有办法解决这个问题?
我正在使用一些第三方软件来帮助使用Xcode 4.3.2编写iPad应用程序.该软件是开源的,通常设置为使其代码与开发人员为应用程序编写的任何代码一起编译.因为我在很多地方使用该软件,所以我决定将其构建为iOS模拟器的静态库.
我能够构建库,并将一个应用程序转换为链接到该库,而不是编译原始源代码.但是,当我在模拟器上运行应用程序时,我收到一条错误,指出发送到实例的无法识别的选择器.
我已经验证该程序是否成功使用了部分静态库.但是,有一段代码试图在对象上调用方法,以及发生故障的方法.被调用的方法实际上并未在该对象的接口中定义.而是在另一个模块中提供,该模块定义该对象类的类别.正确包含该模块的头文件,编译器应该能够找到类别方法并将其应用于对象,但在运行时,会出现上述错误.
我使用'nm'命令来验证静态库中是否存在类别方法.以下是输出示例:
nm libStaticLibrary.a | grep categoryMethod
00000130 t -[SomeClass(Category) categoryMethod:]
0000354c s -[SomeClass(Category) categoryMethod:].eh
Run Code Online (Sandbox Code Playgroud)
人们对如何使这个库与所需的应用程序正常工作有什么想法?
是否可以在控制台中设置这一点反馈的断点?这将使处理这个问题变得更加容易.
这个问题可能看起来有点长,但我尽量提供尽可能多的信息,因为我对此非常感兴趣.
我目前正在开发一个应该自动执行XML文档解析的库.但是我现在遇到了第一次测试库的问题.
我有一个名为library的库类CSXDocumentLayout,它表示文档的布局.此类包含- (NSError *)readLayoutDocument:(NSString *)fpath从init方法调用的私有方法.
/* MARK: Reading in Layouts */
- (NSError *)readLayoutDocument:(NSString *)fpath {
CSXDocumentLayout *layout;
CSXXMLParser *parser;
BOOL state;
layout = [CSXDocumentLayout layoutDocumentLayout];
parser = [[CSXXMLParser alloc] initWithDocumentLayouts:
[NSArray arrayWithObject:layout]];
parser.file = fpath;
state = [parser parse];
if(state == NO || parser.error != nil) {
return parser.error;
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
此方法将读入表示其他XML文档布局的XML文档.它由类解析CSXXMLParser,我想测试它.
我创建了一个表示布局文档的对象+[CSXDocumentLayout layoutDocumentLayout].此方法在类别中实现CSXDocumentLayout (CSXLayoutObject).
以下是我的测试文件:
#import <Foundation/Foundation.h>
#import <CeasyXML.h>
int main(int argc, …Run Code Online (Sandbox Code Playgroud) cocoa extension-methods objective-c foundation unrecognized-selector
首先,我尝试了几乎所有在stackoverflow中给出的解决方案,但我没有成功实现全局变量,我甚至做了一步一步的教程,但我仍然得到相同的错误.
继承人的问题:
我有一个包含多个视图的程序,我想在所有视图上使用变量,所以我使用了全局变量,
我有:
GlobalVars.h
#import <UIKit/UIKit.h>
extern NSArray *truckBoxes;
extern NSArray *farmerlist;
extern NSString *farmerCardNumber;
extern NSString *fName;
@interface GlobalVars : NSObject
{
}
@end
Run Code Online (Sandbox Code Playgroud)
GlobalVars.m
#import "GlobalVars.h"
NSArray *farmerlist;
NSArray *truckBoxes;
NSString *farmerCardNumber;
NSString *fName;
@implementation GlobalVars
{
}
@end
Run Code Online (Sandbox Code Playgroud)
我将该文件包含在类中(连接到视图控制器):在我添加的.h文件下 #import "GlobalVars.h
我可以访问farmerlist和truckBoxes从应用程序,但无法访问fName或farmerCardNumber.
我可以写farmerCardNumber同一个视图并从中读取,但如果我稍后尝试从另一个视图访问它,我会得到
2013-10-26 11:11:45.612 C3Cms[10427:70b] Branch : 11558
2013-10-26 11:11:59.459 C3Cms[10427:70b] -[__NSArrayM length]: unrecognized selector sent to instance 0x8b7fbc0
2013-10-26 11:11:59.463 C3Cms[10427:70b] *** Terminating app …Run Code Online (Sandbox Code Playgroud) ios ×7
objective-c ×7
exception ×2
breakpoints ×1
cocoa ×1
cocoa-touch ×1
debugging ×1
foundation ×1
iphone ×1
nsdata ×1
nsurlsession ×1
selector ×1
swift ×1
uikeyboard ×1