Недавно я закончил свое первое приложение для Iphone, и оно работает отлично… за исключением случаев, когда я проводил интенсивную сессию, используя инструменты, чтобы найти утечки через некоторое время без утечек, внезапно получилось около 1,3 КБ.В трассировке стека все они указывают на точную строку, на которой я выпускаю UIViewControler после отправки его на контроллер навигации (я опубликую этот код чуть ниже).Утечка, кажется, случается через некоторое время, перемещаясь через ViewControlers и обратно.Я знаю, что это очень общий вопрос, но я надеюсь, что кто-то может указать мне правильное направление.Я потратил несколько дней, пытаясь решить эту проблему, и это начинает сводить меня с ума!
Мое приложение основано на навигации, вот как оно работает в двух словах:
Начинается сUIViewControler, который при нажатии кнопки переходит к другому UIViewControler, содержащему TableView.Отсюда, в зависимости от содержимого массива, который заполняет TableView, он может перейти к UIViewControler, содержащему PickerView, затем к последнему UIViewControler или просто перейти прямо к последнему UIViewControler, минуя один с PickerView.
Вот код, который трассировщик стека сообщает о включенной утечке:
SoundConfiger *third = [[SoundConfiger alloc] initWithNibName:@"SoundConfiger" bundle:[NSBundle mainBundle]];
[third setTitle:@"Sound Link"];
third.myData = myData;
third.selectedRow = row;
third.currentChoise = nil;
[self.navigationController pushViewController:third animated:YES];
[third release]; <---- Instruments says the leak is here on this line.
Разве теперь NavigationController не должен нести ответственность за этот UIViewcontroler?Я нигде не вызывал сохранение на третьем месте, и он существует только в этой функции.
У меня есть куча утечек из UIkit и QuartsZone.У меня есть скриншот ниже некоторых из них, в трассировке стека все указывают на один и тот же фрагмент кода, в той же функции, в том же объекте, как указано выше в некоторый момент в трассировке:
Здесьявляется ссылкой на изображение, поскольку я пока не могу публиковать изображения: Ссылка больше не действительна
Вот завершенная трассировка стека от первого GeneralBlock-16 в списке.Жирным шрифтом (строка 29) является фрагмент кода выше:
0 libSystem.B.dylib malloc
1 CoreFoundation - [__ NSArrayM insertObject: atIndex:]
2 CoreFoundation - [__ NSArrayM addObject:]
3 UIKit - [UIView (UIViewGestures) addGestureRecognizer:]
4 UIKit - [UISwitch _commonInit]
5 UIKit - [UISwitch initWithCoder:]
6 UIKit UINibDecoderDecodeObjectForValue
7 UIKit UINibDecoderDecodeObjectForValue
8 UIKit - [UINibDecoder декодирование] 10 * UID]
10 UIKit UINibDecoderDecodeObjectForValue
11 UIKit - [UINibDecoder decodeObjectForKey:] *
12 UIKit - [UIRuntimeConnection initWithCoder:1048 * 14 UIKit UINibDecoderDecodeObjectForValue
15 UIKit - [UINibDecoder decodeObjectForKey:] *
16 UIKit - [UINib instantiateWithOwner: параметры:]
17 UIK- [NSBundle (UINSBundleAdditions) loadNibNamed: владелец: опции:]
18 UIKit - [UIViewController _loadViewFromNibNamed: bundle:]
19 UIKit - [UIViewController loadView]
* 1060 20- [Представление UIViewController]
21 UIKit - [UIViewController contentScrollView]
22 UIKit - [UINavigationController _computeAndApplyScrollContentInsetDeltaForViewController:]
* Контроллер UIN UC:1068 * 24 UIKit - [UINavigationController _startTransition: fromViewController: toViewController:] *
25 UIKit - [UINavigationController _startDeferredTransitionIfNeeded]
26 UIKit - принудительная 10-минутная проверка* 27 UIKit 0x6ea9b5
28 UIKit - [UINavigationController pushViewController: animated:]
29 Booby Trap - [SelectEventTypeviewcontroler ChooseThisOne] / Пользователи / chriswyllie / Documents / Booby TrabyКлассы / SelectEventTypeviewcontroler.m: 91
30 CoreFoundation - [NSObject (NSObject) executeSelector: withObject: withObject:]
31 UIKit - [UIApplication sendAction: к: от: forEvent:]
32 UIKit - [UIApplication sendAction: toTarget: fromSender: forEvent:]
33 UIKit - [UIControl sendAction: to: forEvent:]
34 UIKit - [UIControl (Internal) _sendActionsForEvents: withEvent:]
35 UIKit - [UIControl затрагивает Ended: withEvent:]
36 UIKit - [UIWindow _sendTouchesForEvent:]
37 UIKit - [UIWindow sendEvent:]
38 UIKit - [UIApplicationSendEvent:] * 1 099
39 UIKit _UIApplicationHandleEvent
* * +1102 40 GraphicsServices PurpleEventCallback
41 CoreFoundation CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION
42 CoreFoundation __CFRunLoopDoSource1
43 CoreFoundation __CFRunLoopRun
44 CoreFoundation CFRunLoopRunSpecific
45 CoreFoundation CFRunLoopRunInMode
46 GraphicsServices GSEventRunModal
47 GraphicsServices GSEventRun
48 UIKit - [UIApplication _run]
49 UIKit UIApplicationMain
50 Главная / пользователи / chriswyllie / Документы / BoobyTrap / Booby Trap / main.m: 14
51 Начало Booby Trap
Спасибо за вашу помощь заранее, я надеюсь, что просто делаю что-то глупое и мне нужно свежеенабор глаз, чтобы увидеть это.Дайте мне знать, если вам нужна дополнительная информация.