ma1*_*w28 4 core-data retain nsmanagedobject nsmanagedobjectcontext
NSManagedObject提供访问它NSManagedObjectContext,但它保留它吗?
根据Marcus Zarra的 " 在iOS上传递NSManagedObjectContext"," 内部NSManagedObject保留了对它的引用NSManagedObjectContext,我们可以访问它."
Zarra如何知道这一点并且他是否正确?
我问,因为我想知道是否NSManagedObjectContext会dealloc在tearDown下面的方法中编辑.(我正在使用CocoaPlant.)
#import <SenTestingKit/SenTestingKit.h>
#import <CocoaPlant/CocoaPlant.h>
#import "AccountUser.h"
@interface AccountUserTests : SenTestCase {
AccountUser *accountUser;
}
@end
@implementation AccountUserTests
- (void)setUp {
accountUser = [AccountUser insertIntoManagedObjectContext:
[NSManagedObjectContext contextWithStoreType:NSInMemoryStoreType error:NULL]];
}
- (void)tearDown {
[accountUser delete];
}
- (void)testFetchWithLinkedAccountUserID {
// Tests go here...
}
@end
Run Code Online (Sandbox Code Playgroud)
小智 8
NSManagedObject不保留对其NSManagedObjectContext的强引用.我在测试项目上检查了一下.因此,只要您使用其对象,就应该对NSManagedObjectContext保持强引用.
马特,
我认为 Marcus 可能误写了 NSManagedObject 保留其上下文。每个 NSManagedObject 都维护一个到上下文的链接。除非单个对象具有内部保留周期或保留在其上下文之外,否则根据我的经验,它们都会在上下文释放时被释放。如果他们保留了上下文,那么几乎肯定不会出现这种情况。
如上所述,您可以轻松编写代码来测试 Marcus 的主张。覆盖 -dealloc 并在调用时记录它。
IMO,最好的做法是保留您的上下文,直到您完成为止。依赖于未记录的行为可能并不明智。
安德鲁
| 归档时间: |
|
| 查看次数: |
1760 次 |
| 最近记录: |