- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的猜测是我在这里缺少对核心数据的一些基本理解,但是这里是:
我的应用程序中有多个提取请求来处理不同事物的检索。在某些情况下,代码运行良好,返回请求的对象。
在某些情况下,它会返回似乎已经释放的对象(例如,稍后尝试引用返回结果的几行代码会给出 EXC_BAD_ACCESS)。当我在代码中设置各种断点和日志语句并单步执行时,偶尔也会在代码的其他位置出现 SIGABRT 或 EXC_BAD_ACCESS。
在每种情况下,似乎都是在我去引用获取请求的结果时。
这是一个这样的获取请求的示例:
// Who am I?
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *signedInPersonId = [defaults stringForKey:@"signedInPersonId"];
// Return (if any) the Request object with given UUID
RequestStrings *r = [[RequestStrings alloc] init];
NSEntityDescription *description = [NSEntityDescription entityForName:r.table_Request inManagedObjectContext:moc];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(UUID == %@) && (dataOwnerId == %@)", UUID, signedInPersonId];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:description];
[request setPredicate:predicate];
NSError *error = nil;
NSArray *requests = [moc executeFetchRequest:request error:&error];
Request *returnRequest = nil;
if (requests != nil) {
if ([requests count] > 0) {
NSLog(@"getRequestWithId - requests array: %@, first: %@", requests, [requests objectAtIndex:0]);
returnRequest = [requests objectAtIndex:0];
}
else {
returnRequest = nil;
}
}
[r release];
[request release];
return returnRequest;
附言这是更多信息在某些情况下,相同的代码将返回所需的对象,或抛出一个异常,指出 [NSCFNumber length]
是一个无法识别的选择器。不确定相同的实体描述 + 获取请求如何在一种情况下返回数组而在另一种情况下返回数字。
最佳答案
你基本上是这样做的:
// (1) Create an array of stuff
NSArray *myArray = [NSarray arrayWithObjects:a, b, c, nil];
// (2) Take the first one off
id myObject = [myArray objectAtIndex:0];
// (3) Release everything
[myArray release];
// (4) Return myObject
return myObject;
您只是在使用 CoreData 执行步骤 (1)。
步骤 (1) 返回一个对象数组。唯一保留这些对象的是它们所在的数组*。如果释放数组(第 3 步),您将释放其中的所有对象。为什么你期望 myObject 在步骤 (4) 之前仍然存在?
试试这个:
// Make sure that we keep a retain of returnRequest
returnRequest = [[[requests objectAtIndex:0] retain] autorelease];
*对于那里的学究:我做了一个假设,使我的回答更简单。在现实世界中,您不知道是什么保留了您的对象——这取决于框架和您的代码。但是,最好保留任何您希望保留的东西。
关于iphone - NSManagedObjectContext executeFetchRequest 返回不稳定的对象,导致 EXC_BAD_ACCESS、SIGABRT 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6660851/
首先让我说,我知道这是一个相当普遍的话题,但在搜索它时,我找不到另一个可以澄清以下情况的问题。如果这可能是重复的,我很抱歉,但是你去: 我是并发新手,为了回答问题,我得到了以下代码: a)为什么除了“
我有这个简单的 MigLayout: 最后两个组件 (JScrollPanes) 应具有相同的宽度。但事实上,如果我调整窗口大小,它们会随机跳跃。是否可以使它们的宽度相等?我还能如何排列组件使其看起来
我的 jQuery 导航存在问题。它没有通常的导航设置(ul > li > ul 等)。我这里有一个 jsfiddle:http://jsfiddle.net/RMRGH/2/ 如果将代码放在本主题中
我只使用 HTML/CSS 制作了一个饼图计时器动画。你可以在这里看到它: https://jsfiddle.net/yisusans/why2wy5q/ .timer-container { b
我有一个菱形网格(因此是一个正常的正方形网格,旋转了 45 度),我希望能够在该网格内部拖动一个点。我使用 canvas 元素制作了我的网格并应用了一个转换:rotate(45deg)。但是,这会导致
我目前正在用 C 编写应用程序,我打算在其中模拟 ubuntu 中的 CPU 负载低于 100%。我使用阶乘算法对我的 CPU 施加压力,并使用 nanosleep 函数来调节 CPU 使用率。目标是
我想使用subprocess.Popen来运行一个进程,具有以下要求。 我想在进程运行时将 stdout 和 stderr 通过管道传回 Popen 的调用者。 如果进程仍在运行,我想在 timeou
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在编写一个客户端,使用套接字从记录 PC (RP) 接收 EEG 数据,以产生一些在线反馈。 RP 有一个通过 TCP 发送数据的服务器。数据与 block 一起发送,每个 block 都有一个标
我在 Win 10 64 位上运行 PG 9.5。我正在 VS 2016 下编译 C。 我正在形成一个函数,它将演变成一个有点复杂的野兽。为了测试我最初的努力,该函数接受一个 int4 数组(这工作正
我正在尝试更新 使用 jquery 标记,但是,当我单击“提交”按钮时,我使用 innerHTML 插入的文本很快就会消失。除非我使用 Firefox,在这种情况下它似乎可以工作 - 如果 - 我插入
使用 st_distance_sphere 时从 MySQL 给出的结果看起来真的很不稳定。 在用户表上运行此查询:(距离点9.45公里以内的用户列表) select *, st_distance_s
所以我昨天发布了一个关于在容器中放置一些 div 的问题,以便它们与容器的边缘对齐,但在中间它们之间的间距相等。由于它们是可排序的(使用 jQuery UI Sortable),所以这很复杂。 Gre
我正在尝试将一个 int 字符串转换为一个 int 数组。 这是我的代码: int premaster1 = 3255859; char hashString[100]; int hashString
我用 Codeigniter 的 Active Record 做了一个简单的选择查询,但不知何故它与我真正的 MySQL 记录有不同的结果。 MyModel.php class MyModel ext
我正面临关于 StampedLock 的奇怪行为.以下是主要有问题的代码行: StampedLock lock = new StampedLock(); long stamp1 = lock.read
我使用 Cython 做了一个相当复杂的 python 扩展。在我得到一些奇怪的内存行为之前,它工作正常,形式如下: *** glibc detected *** /usr/bin/python2.7
请引用这个 fiddle :http://jsfiddle.net/eQegA/3/ .spinner { width: 100px; height: 100px; bord
我有一个不稳定的 Java JMS 问题。片刻工作正常,但不规律地抛出以下异常并中断执行。 请务必注意,这不会停止代理。 javax.jms.JMSException: Peer (vm://test
我编写了一个使用 永久运行的程序C 库。 它基本上解密参数中给出的密码。问题是有时它可以完美地工作,有时它会失败(使用相同的公钥/私钥/密码,返回此错误: message: error:040650
我是一名优秀的程序员,十分优秀!