- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用一些 iPhone Core Data 代码来调试一个非常邪恶的问题。
设置是这样的:我有一个线程来轮询Web服务并通过NSNotification
将其结果发送到主线程(在userDict
中传递,一个一堆字符串和 NSNumber)。我正在使用 Tim Hatcher 的 notification library传递到主线程。
NSDictionary* userDict = [Message userDictFromXML:el];
if (userDict != nil)
{
[[NSNotificationCenter defaultCenter] postNotificationOnMainThreadWithName:@"InsertMessage" object:nil userInfo:userDict];
}
主线程接收 userDict,然后继续提取其值并将它们插入到新的托管对象中。到目前为止一切顺利。
但是我遇到了问题,但不是立即发生。在线程将其结果发布到主线程并将新对象保存到上下文中后,我可以执行一系列操作(包括 NSFetchRequest 和几个关系分配),其结果当尝试访问所获取的托管对象的属性之一时,出现 EXC_BAD_ACCESS
中。
另一个有趣的事情是我可以让问题消失。我可以通过在线程中放置一个 [userDict keep]
来完成此操作,然后将其放入 NSNotification
中以发布到主线程中以保存到托管对象中。如果我在接收线程中收到值后立即创建一个新的 NSString
来隔离对象彼此,这并不重要,如果没有 retain
它仍然会崩溃>.
NSDictionary* userDict = [Message userDictFromXML:el];
if (userDict != nil)
{
[userDict retain]; // NOW THIS WORKS (???)
[[NSNotificationCenter defaultCenter] postNotificationOnMainThreadWithName:@"InsertMessage" object:nil userInfo:userDict];
}
什么给了???
最佳答案
所以问题确实出在托管对象的属性上,对吧?保留修复问题的原因是因为该字典永远不会被释放,这意味着无论其他什么过度释放你的对象都能够在不崩溃的情况下这样做,最后你有一个字典,其中有一个错误的指针(因为你的对象已发布)。
如果您有 Snow Leopard,请尝试在打开 NSZombieEnabled 的情况下运行,并使用 ObjectAlloc 工具工具。当僵尸被释放后,您可以单击并找到该对象被保留和释放的所有位置的列表。
关于iphone - 核心数据: How do I maintain without retain?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2151308/
在这样的代码中,(retain, nonatomic) 和 (nonatomic, retain) 之间有什么区别: @property (retain, nonatomic) YellowViewC
我有一段 Objective-C 代码,如下所示: - (NSString *)copyData:(NSData *)data { NSString *path = [[[self outpu
当对一个对象多次调用 -retain 时会发生什么?用完之后就释放一次可以吗? 最佳答案 通常,您需要释放对象的次数与保留对象的次数相同 - 这就是它被称为引用计数的原因。对象指针的持有者调用 -re
我仍然对内存管理的微妙方面感到不安,并且我对我在一些示例代码中看到的激进保留/释放有疑问。具体来说: - (void)loadContentForVisibleCells { NSArray
嗨,我已经实现了: - (NSImage *)dragImageForRowsWithIndexes:(NSIndexSet *)dragRows tableColumns:(NSArray *)ta
在下面的代码片段中, function retreive_data_from_UI() { let arr_rows = []; cy.get(constants.cssCustome
是否可以在您的应用程序运行时连续解锁屏幕。 最佳答案 您可以使用 WakeLock .但这不是一个好的解决方案,因为您必须手动获取和释放它。并且 AFAIK 它需要许可。更好的解决方案是对需要屏幕打开
我想知道以下两者之间的区别: NSMutableArray *myArray = [[someObject returnMutableArray] retain]; 和 NSMutableArray
我为 iOS 4 编写了数千行代码。代码库包含许多对 retain 和 release 的调用,当项目更新到 iOS 5 时会导致错误和 ARC。 有没有办法自动将手动保留释放 (MRR) 代码转换为
我正在向我的 View 添加两个按属性存储的 subview 。将 subview 添加到我的 View 时, subview 似乎在我的 setup 方法被调用后被释放。最终结果是 View 永远不
给定具有保留属性的类的以下定义: @interface FeedEntry : NSObject { NSURL* url; NSData* source; } @property
我正在使用 HTML textarea 让用户输入一些数据并将其保存到 App Engine 的模型中 问题是,当我检索内容时,它只是文本,所有格式都消失了 原因是在 textarea 中没有我们可以
我正在处理 this example它解释了如何使用 proc mcmc 拟合标准 Cox 模型在 SAS 9.3 . 对于数据中的第一行 ( ind=1 ), S=exp(bZ)与其他量一起计算。需
我已经从众多 Apple 代码示例之一中实现了一些代码,但遇到了一些麻烦,因为其中一个属性的保留属性似乎不起作用。这是属性声明: @property (nonatomic, retain) Editi
我是一名初学 iPhone 开发人员,我想知道 @property(非原子,保留)语句的用法和示例,任何人都可以给我任何答案吗? 最佳答案 @property 告诉 Objective-C 当该成员变
我正在尝试使用一些 iPhone Core Data 代码来调试一个非常邪恶的问题。 设置是这样的:我有一个线程来轮询Web服务并通过NSNotification将其结果发送到主线程(在userDic
我有一个非常简单的程序,我只需创建一个对象并查看保留计数。 #import #import "GeometryCalculator.h" int main (int argc, const char
NSMenuItem -setTarget:它是否保留目标,还是应该显式保留它? 我见过关于此的相互矛盾的文档。我知道 NSInitation 中的 keepArguments,但我不确定这是否适用于
我的问题是 this 的 Scala (Java) 变体Python 上的查询。 特别是,我有一个字符串 val myStr = "Shall we meet at, let's say, 8:45
这个问题在这里已经有了答案: @property retain, assign, copy, nonatomic in Objective-C (5 个答案) 关闭 9 年前。 当我在 iOS 中为
我是一名优秀的程序员,十分优秀!