由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFType next]:无法识别的选择器已发送到实例”
Posted
技术标签:
【中文标题】由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFType next]:无法识别的选择器已发送到实例”【英文标题】:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType next]: unrecognized selector sent to instance ' 【发布时间】:2012-08-20 15:03:41 【问题描述】:发生此错误是因为此行“[self autorelease];” 如果我评论这一行,那么异常不会出现,但应用程序看起来很慢,所以请告诉我,我可以写什么而不是那一行
if(sqlite3_step(statement)==SQLITE_ROW) pagestr = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement,0)]; //dateLabel.text=previousDate; //textView.text=pagestr; EditorPage* prev= [[EditorPage alloc] initWithNibName:@"EditorPage" bundle:nil]; prev.dateString= previousDate; prev.bodyString= pagestr; NSArray* array= [[NSArray alloc] initWithObjects:prev,@"forward",nil]; [[NSNotificationCenter defaultCenter] postNotificationName:@"next EditorPage" object:array]; [prev autorelease];
【问题讨论】:
【参考方案1】:你什么时候做[ self autorelease ]
?我认为这很不寻常——可能是不正确的。
此消息表示您将消息下一个发送到NSCFType
的对象。
此类消息通常是由于向已释放的对象发送消息而导致其内存随后重新分配给不同类型的对象。
您可以打开僵尸来追踪此类问题。 此外,您可以将代码移至 ARC 以帮助避免保留/释放问题。
【讨论】:
if(sqlite3_step(statement)==SQLITE_ROW) pagestr = [NSString stringWithUTF8String:(char )sqlite3_column_text(statement,0)]; // dateLabel.text=previousDate; // textView.text=pagestr; EditorPage prev= [[EditorPage alloc] initWithNibName:@"EditorPage" bundle:nil]; prev.dateString=prevDate; prev.bodyString= pagestr; NSArray* array= [[NSArray alloc] initWithObjects:prev,@"previous",nil]; [[NSNotificationCenter defaultCenter] postNotificationName:@"next EditorPage" object:array]; [自我自动释放]; 您应该将其添加到您的问题中,而不是作为评论 - 这不是真正可读的。 但我无法发布有问题的代码,所以我将其发布在这里。如果可以,请帮助我 不要打电话给[ self autorelease ]
!
您应该将项目切换到 ARC!以上是关于由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFType next]:无法识别的选择器已发送到实例”的主要内容,如果未能解决你的问题,请参考以下文章
由于未捕获的异常而终止应用程序 [UIImageView _isResizable]
由于未捕获的异常“NSInternalInconsistencyException”错误而终止应用程序