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
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 =) –
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. –
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;) –