Hor*_*hiv 3 memory-management core-data objective-c ios automatic-ref-counting
嗨,我在ARC下有一个令人讨厌的内存管理问题,无法弄清楚如何解决它.问题就像这样,我有这些对象:
ObjectManager - 对核心数据执行fetchRequests并获取一个或多个NSManagedObjects的单例
UIViewControllerA - 一个视图控制器,其中有一个按钮"PassManagedObject"和一个声明如下的属性:
@property (strong, nonatomic) ManagedObject *objectForToday;
Run Code Online (Sandbox Code Playgroud)
在UIViewControllerA上的viewDidLoad中,我调用了方法refreshDailyObject,它执行此操作:
self.objectForToday = nil;
self.objectForToday = [[ObjectManager sharedManager] getDailyObject];
Run Code Online (Sandbox Code Playgroud)
如果我挖掘的PassManagedObject按钮I 创建UIViewControllerB,通过所述objectForToday它和显示它,见下文
- (IBAction)passManagedObjectTapped:(id)sender {
UIViewControllerB *viewController = [[UIViewControllerB alloc] initWithNibName:@"UIViewControllerB"];
viewController.object = self.objectForToday;
[self.navigationController pushViewController:viewController animated:NO];
}
Run Code Online (Sandbox Code Playgroud)
UIViewControllerB有一个声明如下的属性:
@property (strong, nonatomic) ManagedObject *object;
Run Code Online (Sandbox Code Playgroud)
和一个按钮" 后退 ",它执行此操作:
- (IBAction)backAction:(id)sender {
self.object = nil;
[self.navigationController popViewControllerAnimated:NO];
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是这个.如果我点击不断passManagedObjectTapped然后backAction,并再次passManagedObjectTapped又一次backAction,然后再passManagedObjectTapped和自动化这个我得到最终收到内存警告1,然后崩溃.
仪器没有显示任何泄漏,但我的内存分配持续缓慢上升.
我在iOS4.3和iOS5下使用ARC.我一直在努力弄清楚现在一天出了什么问题.任何帮助将受到高度赞赏.
谢谢!
self.object = nil; 和self.objectForToday = nil; 没有必要 - ARC和合成的属性设置器已经处理好了.
你似乎很可能在某个地方有一个循环引用.您是否有任何情况,其中对象A具有对对象B的强引用,而对象B具有对对象A的强引用?
如果是这样,只需将其中一个引用更改为弱(或者如果要支持iOS 4.3则分配).
| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |