Приборы показывают утечку в main.m (Xcode 4.3.1) - PullRequest
15 голосов
/ 18 марта 2012

Я занимаюсь разработкой приложения с использованием ARC При профилировании моего приложения в инструментах для утечек памяти оно показывает утечки при следующей функции:

#import <UIKit/UIKit.h>

#import "AppDelegate.h"

int main(int argc, char *argv[])

{
    @autoreleasepool { 
       return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

Указывает ли это на проблему где-то еще в моем коде?

Это трассировка стека

   0 libsystem_c.dylib malloc
   1 libsystem_c.dylib strdup
   2 libnotify_sim.dylib token_table_add
   3 libnotify_sim.dylib notify_register_mach_port
   4 libnotify_sim.dylib notify_register_dispatch
   5 CoreFoundation _CFXNotificationRegisterObserver
   6 CoreFoundation CFNotificationCenterAddObserver
   7 UIKit -[UIScrollView(Static) _startTimer:]
   8 UIKit -[UIScrollView _endPanWithEvent:]
   9 UIKit -[UIScrollView handlePan:]
  10 UIKit _UIGestureRecognizerSendActions
  11 UIKit -[UIGestureRecognizer _updateGestureWithEvent:]
  12 UIKit -[UIGestureRecognizer _delayedUpdateGesture]
  13 UIKit ___UIGestureRecognizerUpdate_block_invoke_0541



14 UIKit _UIGestureRecognizerApplyBlocksToArray
  15 UIKit _UIGestureRecognizerUpdate
  16 UIKit -[UIWindow _sendGesturesForEvent:]
  17 UIKit -[UIWindow sendEvent:]
  18 UIKit -[UIApplication sendEvent:]
  19 UIKit _UIApplicationHandleEvent
  20 GraphicsServices PurpleEventCallback
  21 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__
  22 CoreFoundation __CFRunLoopDoSource1
  23 CoreFoundation __CFRunLoopRun
  24 CoreFoundation CFRunLoopRunSpecific
  25 CoreFoundation CFRunLoopRunInMode
  26 GraphicsServices GSEventRunModal
  27 GraphicsServices GSEventRun
  28 UIKit UIApplicationMain
  29 MyProject/main.m:16
  30 MyProject start

Ответы [ 3 ]

22 голосов
/ 22 марта 2012

Кажется, это ошибка в платформе iOS 5.1: https://devforums.apple.com/message/630695

1 голос
/ 20 марта 2012

У меня была такая же проблема при использовании ARC, и она была вызвана наличием функции dealloc в контроллере вида.При наличии функции dealloc (которая в моем случае ничего не делала) поведение по умолчанию может не вызываться.Попробуйте закомментировать все экземпляры dealloc, и это должно решить вашу проблему.

0 голосов
/ 22 марта 2012

Ваш main.m выглядит иначе, чем другие, которых я видел.Вы форматировали это таким образом, или это было сделано автоматически?Вот пример из одного из моих приложений ARC.

int main(int argc, char *argv[]) {

    @autoreleasepool {
        int retVal = UIApplicationMain(argc, argv, nil, nil);
        return retVal;
    }
}
...