无法识别的选择器发送到实例

Posted

技术标签:

【中文标题】无法识别的选择器发送到实例【英文标题】:unrecognized selector sent to instance 【发布时间】:2011-11-11 11:36:14 【问题描述】:

我正在创建一个示例应用程序,其中我正在读取数据库并将用户图像和名称显示到 tableview 中。 但我得到以下异常

[UIApplication userListMutableArray]: unrecognized selector sent to instance 0x6816330

以下是我的代码 sn-p

AppDelegate *appDelegate = (AppDelegate*)[UIApplication sharedApplication];

if(sqlite3_open([dbPath UTF8String], &database)==SQLITE_OK)

  const char *sql = "select NAME,IMAGE from user";
    sqlite3_stmt *selectstmt;

    if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL)==SQLITE_OK)
    
        while (sqlite3_step(selectstmt) == SQLITE_ROW) 

            UserData *userData = [[UserData alloc] init];
            userData.userName = [NSString stringWithUTF8String:(char*)sqlite3_column_text(selectstmt, 0)];
            NSData *data = [[NSData alloc] initWithBytes:sqlite3_column_blob(selectstmt, 1) length:sqlite3_column_bytes(selectstmt, 1)];
            if(data == nil)
                NSLog(@"image not found");
            userData.userImage = [UIImage imageWithData:data];


            **[appDelegate.userListMutableArray addObject:userData];**
        

    

else

    sqlite3_close(database);

[appDelegate.userListMutableArray addObject:userData];

上面给出了异常,但我无法跟踪问题。 :(

【问题讨论】:

How can I debug 'unrecognized selector sent to instance' error的可能重复 【参考方案1】:

您的 appDelegate 变量指向 UIApplication 而不是它的委托属性。更改此分配...

AppDelegate *appDelegate = (AppDelegate*)[UIApplication sharedApplication];

到...

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

【讨论】:

【参考方案2】:

更改以下行

AppDelegate *appDelegate = (AppDelegate*)[UIApplication sharedApplication];

AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];

【讨论】:

以上是关于无法识别的选择器发送到实例的主要内容,如果未能解决你的问题,请参考以下文章

快速代码崩溃:“发送到实例的无法识别的选择器”

Swift 3:将无法识别的选择器发送到手势识别器实例

无法识别的选择器发送到实例,UISlider swfit3

UITableViewController 无法识别的选择器发送到实例

无法识别的选择器发送到实例

[UICollectionViewCell imageView]:无法识别的选择器发送到实例