- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关于我保存数据的方式的一些信息:我有一个由用户添加和删除的 View Controller 数组(这基本上是一个笔记应用程序, View Controller 是文件夹)。 View Controller 有几个应用程序需要保存的动态属性以及其中的注释数组,然后注释对象本身有一些需要保存的属性。 View Controllers 和 Notes 当然都有适当的 NSCoding 东西,例如 View Controllers:
- (void) encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:self.folderName forKey:@"lvcTitle"];
[encoder encodeObject:[NSNumber numberWithInt:self.myPosition] forKey:@"myPosition"];
[encoder encodeObject:self.notes forKey:@"notes"];
}
- (id)initWithCoder:(NSCoder *)decoder {
self.folderName = [decoder decodeObjectForKey:@"lvcTitle"];
NSNumber *gottenPosition = [decoder decodeObjectForKey:@"myPosition"];
int gottenPositionInt = [gottenPosition intValue];
self.myPosition = gottenPositionInt;
self.notes = [decoder decodeObjectForKey:@"notes"];
return self; }
Controller 数组属于单例类。 NSCoding 对我来说很困惑,尽管它被认为是简单的东西,但到目前为止,我已经成功地只告诉 Singleton 保存 Controllers 数组——然后(成功地)保存了 View Controllers 的所有包含的属性,它们的属性以及注释的所有属性。这是单例中的代码:
- (void) saveDataToDisk:(id)object key:(NSString *)key {
NSString *path = [self pathForDataFile];
NSMutableDictionary *rootObject;
rootObject = [NSMutableDictionary dictionary];
[rootObject setValue:object forKey:key];
[NSKeyedArchiver archiveRootObject:rootObject toFile:path]; }
- (void) loadDataFromDisk {
NSString *path = [self pathForDataFile];
NSDictionary *rootObject;
rootObject = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
if ([rootObject valueForKey:@"controllers"] != nil) {
self.controllers = [NSMutableArray arrayWithArray:[rootObject valueForKey:@"controllers"]];
firstRun = false;
LabeledViewController *lastOneThere = [self.controllers objectAtIndex:self.controllers.count-1];
lastOneThere.isFolderAddView = TRUE;
}else{
firstRun = true;
}
}
然后我在文件夹 View Controller 中多次调用保存方法:
[singleton saveDataToDisk];
这会运行好几次,直到我在加载应用程序时随机崩溃。罪魁祸首是 heightForRowAtIndexPath:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
Note *currentNote = [self.notes objectAtIndex:indexPath.row];
if (currentNote.associatedCellIsSelected) {
return currentNote.myHeight + NOTE_BUTTON_VIEW_HEIGHT;
}
return NORMAL_CELL_FINISHING_HEIGHT; }
我收到以下错误:
2012-06-07 08:28:33.694 ViewTry[1415:207] -[__NSCFString associatedCellIsSelected]: unrecognized selector sent to instance 0x8904710
2012-06-07 08:28:33.696 ViewTry[1415:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString associatedCellIsSelected]: unrecognized selector sent to instance 0x8904710'
*** First throw call stack:
我知道“__NSCFString”和“无法识别的选择器发送到实例”意味着在某处不应该有一个字符串,因为 associatedCellIsSelected 是一个 bool 值。但是,如果我只在 heightForRow 中返回“currentNote.myHeight”,我也会得到与 myHeight 相同的 __NSCF 错误,这是一个 float 。如果我一起取出 heightForRow ,除了适当的高度定义外,一切都有效。
顺便说一句,heightForRowAtIndexPath 引用的 TableView 是在创建并填充注释数组后在 loadView 中创建的。我只是不明白为什么这个错误只会偶尔弹出(比如 5-10 次打开、保存、关闭和重新打开应用程序),看似随机 - 我找不到导致此行为的模式。有什么指点吗?
抱歉弄得一团糟,我是 iOS 编程的新手,我确定我在这里做错了很多事情。
编辑 - 此外,一旦应用程序崩溃,每次我重新打开它时它都会崩溃(除非我禁用 heightForRow),直到我卸载并重新安装它。
最佳答案
当您看到“无法识别的选择器”错误并且接收者类型不是您编码的对象类型(在本例中为 __NSCFString
而不是 Note
)时,很可能您会遇到问题,您打算使用的对象已过早释放,并且其地址空间被重新用于分配新对象。
修复取决于追踪额外释放发生的地方(或保留没有发生的地方)。如果您可以显示 notes
的 @property 声明,它可能会更清楚地说明情况。
一件快速的事情是从菜单中选择 Product->Analyze 并修复它标记的任何内容。它不会捕获所有内容,但它是一个很好的开始检查。
关于ios - 加载时 heightForRowAtIndexPath 偶尔会崩溃,NSCoding - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10903817/
我有 4 个 TextView。它们一开始都是不可见的,我将它们动画到屏幕上(从底部滑入)。我启动一个线程来为每个动画制作动画,每个动画开始时间间隔 200 毫秒。问题是:开始 Activity 后第
我有一个奇怪的问题,我似乎无法解决。 :(我有一个基于 Web 的应用程序,可以发送电子邮件。它通过连接在本地网络上设置的基于 Windows 的 SMTP 服务器来实现。此 SMTP 服务器不需要我
从昨天开始,我一直遇到一些设备收不到推送通知的问题。证书/设备 token 似乎是正确的,因为直到昨天,该设备还可以成功接收推送通知。 在服务器端,没有错误或连接拒绝,而且推送通知似乎每次都发送成功。
我有一个将 Angular 错误记录到数据库的应用程序,并且我偶尔会看到此错误的日志 Error: [$compile:tpload] http://errors.angularjs.org/1.5.
我收到一个 ImportError from azure.storage.blob import BlobServiceClient 但是我意识到当我安装依赖项时会发生错误 pip install a
我已经完成了使用AVAudioPlayer实现的简单音频播放GUI。 播放声音时,我使用UISlider提供播放反馈... 这是奇怪的地方。 我有一个非常偶尔发生的问题-而且大多数情况都不会发生,因此
在我的 XNA 游戏中,我的计算机(2.5 Ghz 双核 Intel Centrino 2)在 Debug模式下有一个大约需要 10 毫秒的操作。它只会每隔几分钟运行一次,它基本上只是整数数学/按位运
我相信我的应用程序编码正确(至少大部分是这样),因为它在大约 98% 的时间里都能正常工作。但是,大约 2% 的时间,我得到的似乎是有效的身份验证 token ,但是当我去发布照片时,我收到以下错误“
我在 apple store 上有一个应用程序,在 iOS6 更新后,我在 MKMapView 中收到了数百份崩溃报告。我无法在我的设备上重现崩溃。它看起来像是 EAGLContext 的问题。我们不
我最近开始使用 Foundation 5(我第一次使用 Foundation),我遇到了一个问题,似乎任何元素都响应了 .click 事件(例如顶部导航栏,单击元素时显示的数据下拉列表)将随机不起作用
花了大约一整天的时间试图解决这个问题,希望有人能帮助我!我是新来的,所以如果这是一个重复的问题,我深表歉意(我做了我的研究,但无法提前找到任何东西)。 我正在为我的咨询公司构建的网站使用浏览器缓存,但
我有一个表格,使用了以下 CSS 和 HTML: .price { position:relative; display:block; text-align:center; }
我们使用 ansible 将多个节点配置为一个集群。这些机器是在自定义 AWS 类似基础设施上创建的实例。 我们在不同的剧本上有大约一百个任务,它们在每个节点上执行。 问题是,我们收到零星的主机无法访
我们偶尔会从用户那里收到崩溃报告(我们使用崩溃报告程序包将崩溃发送到我们的服务器),并出现以下错误: “非法尝试在不同上下文中的对象之间建立关系‘...’” (不同的报表可能有不同的关系,并非所有报表
我是一名优秀的程序员,十分优秀!