2012-03-18 12 views
15

Tôi đang phát triển một ứng dụng sử dụng ARC Khi profiling ứng dụng của tôi trong các văn bản cho bộ nhớ bị rò rỉ nó cho thấy rò rỉ tại các chức năng sau:cụ hiển thị rò rỉ trong main.m (Xcode 4.3.1)

#import <UIKit/UIKit.h> 

#import "AppDelegate.h" 

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

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

Liệu này chỉ ra một vấn đề ở đâu đó trong mã của tôi?

Đây là stack trace

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 
+0

bạn có bất kỳ nhật ký và mã lỗi cụ thể nào không? vì bạn không tự viết chức năng này cho vấn đề nằm trong mã của riêng bạn =) –

+0

Mục nhập rò rỉ này có trong các công cụ trợ giúp không? Tôi nhận được khoảng 10 mục như thế này trong hai phút chạy ứng dụng của tôi: Đối tượng bị rò rỉ: Malloc 48 byte, Thư viện có trách nhiệm: libsystem_c.dylib Khung có trách nhiệm: strdup. –

+0

bạn sẽ có thể nhấp vào địa chỉ của khối malloc này và nhận được một dấu vết ngăn xếp từ đó sẽ giúp bạn tìm ra nơi nó đến từ. nhưng phải rất trung thực - 10x 48 byte rò rỉ không phải là kết thúc thế giới nếu nó vẫn ở đây;) –

Trả lời

1

Tôi có vấn đề này cùng khi sử dụng ARC và nó được gây ra bởi có chức năng dealloc trong một bộ điều khiển xem. Bằng cách có chức năng dealloc (mà không làm bất cứ điều gì trong trường hợp của tôi), hành vi mặc định có thể không được gọi. Hãy thử nhận xét tất cả các trường hợp của dealloc và điều đó sẽ khắc phục được sự cố của bạn.

+0

Tôi đã sử dụng FMDatabase cho sqlite có cuộc gọi đến siêu dealloc. Tôi đã nhận xét siêu dealloc ra, nhưng các công cụ vẫn hiển thị rò rỉ ở cùng một nơi. Tôi không có dealloc nhiều hơn bất cứ nơi nào trong dự án của tôi –

0

main.m của bạn trông khác hơn những người khác tôi đã thấy. Bạn đã định dạng nó theo cách đó hay nó được thực hiện theo cách đó tự động? Đây là một ví dụ từ một trong các ứng dụng ARC của tôi.

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

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

Nó đã được tạo ra cho tôi bởi Xcode. –