Re: [问题]ARC下 内存崩溃

楼主: zonble (zonble)   2015-12-04 01:31:13
※ 引述《boy19931118 (boy19931118)》之铭言:
: 我有一个Navigation
: A写了自定义Button Push View B
: UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
: bundle: nil];
: LocationWebView *lvc = [storyboard
: instantiateViewControllerWithIdentifier:@"LocationWebView"];
: [self.navigationController pushViewController:lvc animated:YES];
: 程式码大概是这样 因为MAC暂时不在身边 无法拿自己的程式码
: 而B也写了一个返回Button
: [[self navigationController] popViewControllerAnimated:YES];
: 但是返回A后 B的内存并没有被释放 所以只要不停的A>B>A>B>A>B
: 使用内存就会持续上升
: 希望能指点一下
你可能先确定是不是 B 没有被释放,内存上升有很多种原因,
不见得是 B 造成的。你可以试试看在 B class 中先写一个空的 dealloc
然后在 dealloc 的地方打一个 break point,看看是否真的没有呼叫到。
如果 B 真的没有被释放,就是有别的地方 retain 了 B。常见
有几种可能:
1. 是不是 A 还有其他 property 指向 B?
2. B 有没有哪些 property 是 block,而 block 里头呼叫了 self?
3. B 里头有没有 timer 物件的 target 是 self,而在离开 B
的时候没有停止 timer?timer 的 target 会被 timer
retain 一份,而如果 view controller 有 timer 的话,
我们就不该把 invalidate timer 写在 dealloc 的地方,而是
要写在 viewDidDisappear 之类的地方。
: 问题二
作者: boy19931118 (boy19931118)   2015-12-04 12:54:00
非常感谢回答 我再试着尝试看看
作者: charlesdc (MoOn)   2015-12-05 12:37:00
请问Z大,那个剪贴簿会在什么情况下被清除?
作者: uranusjr (←這人是超級笨蛋)   2015-12-05 12:44:00
你或使用者 copy/cut 新资料的时候就会被覆蓋掉
作者: charlesdc (MoOn)   2015-12-05 12:47:00
感谢U大

Links booklink

Contact Us: admin [ a t ] ucptt.com