2010-02-18 86 views
1

我正在構建這個應用程序,我遇到了一些我以前沒見過的問題。造成奇怪崩潰的方法

  1. 當我運行下面連接到觸發器的uibutton的方法時,應用程序崩潰。所以當我點擊按鈕時,它會打印,然後模擬器崩潰到跳板。如果我從跳板再次啓動應用程序,它不會達到打印方法,如果我從xcode重建它,然後像以前一樣迅速渲染。

  2. 通常情況下,在調試控制檯中有一些信息,我至少可以知道發生了什麼,但似乎並沒有太多。有一兩件事我注意到的是,有被打開或某事時,應用程序最初啓動在模擬器中一些關於交通方便,我不記得,如果這是永遠存在與否:

2010-02-18 10:35:19.024現金[497:207] *******輔助功能狀態更改:開2010-02-18 10:35:19.134 現金[497:207] ********* *加載AX 爲:com.yourcompany.Cash ************

版權2010尼古拉斯·揚諾:

-(IBAction) logTransaction { 

NSIndexPath *indexPath = [[NSIndexPath alloc] init]; 
indexPath = [self.categoryTableView indexPathForSelectedRow]; 

NSInteger selectedCategory = indexPath.row; 
[indexPath release]; 
NSString *categoryString = [[NSString alloc] init]; 
categoryString = [self.categoryArray objectAtIndex:selectedCategory]; 
CLLocationManager *locationManager = [[CLLocationManager alloc] init]; 
locationManager.delegate = self; 
locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
locationManager.distanceFilter = 1000.0f; 
[locationManager startUpdatingLocation]; 
double x = 10.0; 
double y = 10.0; 
NSString *descriptionString = [[NSString alloc] init]; 

descriptionString = descriptionField.text; 
//[locationManager stopUpdatingLocation]; 

Transaction *newTransaction = [[Transaction alloc] initWithAmount: [self.amountField.text integerValue] 
                 description: descriptionString 
                 category: categoryString 
                 locationX: x 
                 locationY: y]; 

             [categoryString release]; 
[newTransaction print]; 

//log transaction here... 

[newTransaction release]; 

這裏的控制檯輸出:

10年2月18日10時35分十九秒 AM現金[497] **********加載AX 爲: com.yourcompany.Cash ************ 2/18/10 10:35:28 AM Cash [497] 0.000000,sddssd,快餐,2010-02-18 10:35: 28 -0800,10.000000,10.000000 2/18/10 10:35:28 AM com.apple.launchd.peruser.501 [91](UIKitApplication:com.yourcompany.Cash [0x9148] [497]) 作業出現具有崩潰: 分段錯誤2/18/10 10:35:28 AM SpringBoard [482]應用程序'現金' 異常退出與信號11: 分割錯誤2/18/10 10:35:28 上午ReportCrash [491 ]保存崩潰報告 現金[497]版本??? (???)到 /Users/knyck2/Library/Logs/DiagnosticReports/Cash_2010-02-18-103528_Nicholas-Iannones-MacBook-Pro.crash

這裏的崩潰日誌:

過程:現金[497]路徑:
/用戶/ knyck2 /庫/應用程序 支持/ iPhone 模擬器/ 3.2 /應用/ F54FA00C-9E77-4B9A-8774-2D5B5488A1BA/Cash.app /現金 標識符:現金版本:
??? (???)編碼類型:X86 (母語)父進程:的launchd [91]

日期/時間:2010-02-18 10:35:28.631 -0800 OS版本:
的Mac OS X 10.6 。2(10C540)報告 版本:6

異常類型:EXC_BAD_ACCESS (SIGSEGV)異常代碼: KERN_INVALID_ADDRESS在 0x0000000014600478崩潰螺紋:0 調度隊列:com.apple.main線程

專用資料: objc_msgSend()選擇名稱:釋放 iPhone模擬器3.2(193),iPhone OS 3.2 (7B298g)

螺紋0墜毀:調度隊列: COM .apple.main線程0
libobjc.A.dylib
0x9805aedb objc_msgSend + 27 1
的UIKit
0x002b4a19 _UIApplicationHandleEvent + 8468 2個GraphicsServices 0x02f1f2a8 PurpleEventCallback + 1576 3的CoreFoundation
0x026bb87e CFRunLoopRunSpecific + 4094 4的CoreFoundation
0x026ba878 CFRunLoopRunInMode + 88個5 GraphicsServices
0x02f1da4d GSEventRunModal + 217個6
GraphicsServices
0x02f1db12 GSEventRun + 115 7的UIKit 0x002b265d UIApplicationMain + 1134 8 現金
0x00002648主+ 102(的main.m:13)9
現金
0x000025b6啓動+ 54

線程1:0 libSystem.B名爲.dylib
0x937b88da mach_msg_trap + 10 1
libSystem.B.dylib
0x937b9047 mach_msg + 68 2
的CoreFoundation
0x026bb022的cfrun LoopRunSpecific + 1954 3的CoreFoundation
0x026ba878 CFRunLoopRunInMode + 88 4 WebCore的
0x03151933 RunWebThread(無效*)+ 467 5 libSystem.B.dylib
0x937e5fbd _pthread_start + 345 6
libSystem.B.dylib
0x937e5e42 thread_start + 34

線程0與X86線程狀態崩潰 (32位):EAX:0x07802a50 EBX: 0x00017711 ECX:0x9655d0c4 EDX: 0x07833ba2 EDI:0x14600478 ESI: 00000000 EBP:0xbfffe158 ESP: 0xbfffdfd4 SS:0x0000001f EFL: 0x00010206 EIP:0x9805aedb CS: 0x00000017 DS:0x0000001f ES: 0x0000001f FS:00000000 GS: 0x00000037 CR2:0x14600478

二值圖像: 爲0x1000 - 0x5ff7 +現金??? (???) /用戶/ knyck2 /庫/應用程序 支持/ iPhone 模擬器/ 3.2 /應用/ F54FA00C-9E77-4B9A-8774-2D5B5488A1BA/Cash.app /現金 0xd000 - 0xfff7 + PBGDBIntrospectionSupport.A。 dylib ??? (???) < 8C448816-8655-143E-DA39-C8157FDA8C8B> /Developer/Applications/Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin/Contents/Resources/PBGDBIntrospectionSupport.A.dylib 0x14000 - 0x1a8ff3 +基金會??? (???) < 4361202B-C361-85C9-AAD0-3D062EF44941> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/Foundation.framework/Foundation 0x29e000 - 0x2063fe7 + UIKit? (???) < 524597DC-F210-115D-E31D-01A3429E25C7> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/UIKit.framework/UIKit 0x23be000 - 0x25c6fe7 com.apple.CoreGraphics 1.359.16(???) < 017CBE03-17D3-25FD-E775-087B415993AA> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/ Library/Frameworks/CoreGraphics.framework/CoreGraphics 0x262e000 - 0x2665ff7 + CoreLocation ??? (???) < 80CA49D0-A8EA-0638-A407-0CC131AEEB41> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/CoreLocation.framework/CoreLocation 0x268e000 - 0x2799fff + CoreFoundation ??? (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation 0x287d000 - 0x2a15fe7 + libicucore.A.dylib ?? ? (???)< 13A09086-26EF-E491-ADD8-9019C31542FC> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/usr/lib/libicucore.A.dylib 0x2a76000 - 0x2b75fe7 + libxml2.2.dylib ??? (???)< 78BEDCC4-E0FD-1C59-70ED-46FB3D76055C> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/usr/lib/libxml2.2.dylib 0x2b9a000 - 0x2c41fe7 + CFNetwork? (???) < 24AFEAF9-230F-C79A-3A2F-BB9F1945CF9A> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/CFNetwork.framework/CFNetwork 0x2cc0000 - 0x2cf4ff7 + SystemConfiguration ??? (???)< 5448E217-DB17-F241-AB84-C2FE18372948> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration 0x2d16000 - 0x2d65ff7 +安全? (???) < 90BF3878-B2F5-8FD0-4E81-B59E64C47E1D> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/Security.framework/Security 0x2d8b000 - 0x2e58fe7 + libsqlite3.dylib ??? (???)< 3B663A82-D85F-3CD5-130C-FAA6C5ED2D0E> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/usr/lib/libsqlite3.dylib 0x2e68000 - 0x2ef3fff 融爲一體。 apple.framework.IOKit 1.5.1(???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit 0x2f19000 - 0x2f26ff3 + GraphicsServices ??? (???)< 7FB2250F-CDD1-D975-0387-6E884CC061CD> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices 0x2f39000 - 0x3071ff7 + JavaScriptCore ??? (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore 0x30c5000 - 0x3888fe7 + WebCore ??? (???) < 8801B91D-C8BC-51cc上-B80A-FB9C67BA8FF2> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/WebCore.framework/WebCore 0x3db5000 - 0x3e4bff7 + WebKit ??? (???) < 0D579ECA-E22E-7C70-A214-73D2221CD1C7> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/WebKit.framework/WebKit 0x3ec9000 - 0x3f87fe7 + ImageIO ??? (???) < 524C2CFC-6F77-3B4F-390F-40711BB56980> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/ImageIO.framework/ImageIO 0x3fb2000 - 0x3fd0ff7 +地址簿 ??? (???) < 2EF304E3-4B16-5B0E-E072-BFABF4B44CF5> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/AddressBook.framework/AddressBook 0x3ff1000 - 0x4145fe7 + AudioToolbox ??? (???) < 27DC788A-231B-9DB5-0B48-04A2A8D27F32> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox 0x4198000 - 0x425aff7 + QuartzCore? (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/QuartzCore.framework/QuartzCore 0x42b5000 - 0x42c2ff7 + SpringBoardServices ??? (???)< 3CDBCAE3-B6D3-D734-6CB0-AB39EBBE7D57> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices 0x42cd000 - 0x42f9fff + AppSupport ??? (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/AppSupport.framework/AppSupport 0x4319000 - 0x435cfe7 + CoreText ??? (???) < 971632EA-E809-8D15-BE25-E115A4FBDFF4> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/CoreText.framework/CoreText 0x438c000 - 0x43c7ff7 + MobileCoreServices ??? (???)< 5BFA76AC-EC1B-8D9F-4533-B3DD44041107> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices 0x43e5000 - 0x448efe7 +校對器 ??? (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/ProofReader.framework/ProofReader 0x44ab000 - 0x44b6ff7 + corevideo的??? (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/CoreVideo.framework/CoreVideo 0x44c2000 - 0x44d8fe7 + OpenGLES ??? (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/OpenGLES.framework/OpenGLES 0x44e2000 - 0x4558ff3 + ??? CoreAudio的 (???) < 14C17E9E-0D13-A7BD-3A06-C3F460FD261C> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/CoreAudio.framework/CoreAudio 0x4594000 - 0x4649fe7 libcrypto .0.9.7.dylib ??? (???) < 39CDB041-9DF5-01B1-4B33-03EC4CCA40B3> /usr/lib/libcrypto.0.9.7.dylib 0x468f000 - 0x46b5fff libssl.0.9.7.dylib ??? (???) < 924E1BF8-C24D-4A5C-3DB6-A85034392D19> /usr/lib/libssl.0.9.7.dylib 0x46ea000 - 0x46eaff7 + AccessibilitySettingsLoader ??? (???)< 21BFF58D-21D2-210F-3150-873A8CC87399> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/AccessibilityBundles/AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader 0x46ef000 - 0x46f1ff7 + libAccessibility.dylib ??? (???)< 9F1CEAA6-2910-7F97-A626-DAA33724ED79> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/usr/lib/libAccessibility.dylib 0x7900000 - 0x7909ffb + IAP ?? ? (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/IAP.framework/IAP 0x7916000 - 0x794cff7 + UIKit? (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/AccessibilityBundles/UIKit.axbundle/UIKit 0x7990000 - 0x799bff7 + UIAccessibility ??? (???)< 4E2BD72C-F67F-D0DF-78FA-FB1D5840F6B7> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/UIAccessibility.framework/UIAccessibility 0x79ab000 - 0x79baff7 + AXRuntime ??? (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/AXRuntime.framework/AXRuntime 0x79c8000 - 0x7a0afe7 + libCGFreetype.A.dylib? ?? (???)< 8853F0B7-8EE5-AD36-BC97-B0AD8782E547> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Resources/libCGFreetype。 A.dylib 0x7f31000 - 0x7f57fe7 + libRIP.A.dylib ??? (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/CoreGraphics.framework/Resources/libRIP.A.dylib 0x9cff000 - 0x9d3efe7 + TextInput? ?? (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/TextInput.framework/TextInput 0x9d6a000 - 0x9eafff3 + libmecabra.dylib ??? (???)< 1C45F15E-3F66-3F28-46C7-78EC4B63C803> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/usr/lib/libmecabra.dylib 0x9ee1000 - 0x9ff4ff7 + CoreData? ?? (???) < 6F49CC28-8102-D224-EBBD-12045B6DBA92> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/CoreData.framework/CoreData 0x8fe00000 - 0x8fe4162b dyld的132.1 (???) < 211AF0DD-42D9-79C8-BB6A-1F4BEEF4B4AB> /usr/lib中/ dyld的0x91fe7000 - 0x91feafe7 libmathCommon.A.dylib ??? (???) < 1622A54F-1A98-2CBE-B6A4-2122981A500E> /usr/lib/system/libmathCommon.A。dylib 0x93497000 - 0x93501fe7 libstdC++。6.dylib ??? (???) < 411D87F4-B7E1-44EB-F201-F8B4F9227213> /usr/lib/libstdc++.6.dylib 0x937b8000 - 0x9395cfeb libSystem.B.dylib ??? (???) /usr/lib/libSystem.B.dylib 0x96692000 - 0x966d8ff7 libauto.dylib ??? (???)< 85670A64-3B67-8162-D441-D8E0BE15CA94> /usr/lib/libauto.dylib 0x9706e000- 0x97082fe7 libbsm.0.dylib ??? (???) < 14CB053A-7C47-96DA-E415-0906BA1B78C9> /usr/lib/libbsm.0.dylib 0x98055000- 0x98102fe7 libobjc.A.dylib ??? (???) /usr/lib/libobjc.A.dylib 0x98103000 - 0x981f7fe7 libiconv.2.dylib ??? (???) < 0C578460-3929-29DD-585A-DB1E0C977425> /usr/lib/libiconv.2.dylib 0x98fd9000- 0x98fe7fe7 libz.1.dylib ??? (???) < 7B7A02AB-DA99-6180-880E-D28E4F9AA8EB> /usr/lib/libz.1.dylib 0xffff0000- 0xffff1fff libSystem.B.dylib ??? (???) /usr/lib/libSystem.B.dylib

+0

感謝格式化德克! – nickthedude 2010-02-18 18:49:11

回答

2

這是錯誤的:

NSIndexPath *indexPath = [[NSIndexPath alloc] init]; 
indexPath = [self.categoryTableView indexPathForSelectedRow]; 

NSInteger selectedCategory = indexPath.row; 
[indexPath release]; 

你實例化一個空的NSIndexPath,然後覆蓋引用。最後一行的版本發送給表視圖返回的完全不同的對象。您創建的對象從不使用,也不會釋放。

這將工作:

NSIndexPath *indexPath = [self.categoryTableView indexPathForSelectedRow]; 
NSInteger selectedCategory = indexPath.row; 

你不是創建一個NSIndexPath對象,所以你沒有責任,將其釋放。

(您不必要地釋放是造成該指數路徑實例被提前釋放。當蘋果公司的代碼試圖釋放對象,它不再存在,並且應用程序崩潰)

+0

感謝的人使用setter,那工作的一種享受。我有一段時間試圖弄清楚這件事情,它出人意料地工作,至少第一次嘗試它,但是它被打破了。非常感謝代碼似乎現在完美地完成了,這要歸功於這裏的兩個答案,我希望我可以給出兩個答案的綠色檢查,但只有一個允許。 現在我即將嘗試解決更多問題。 :) – nickthedude 2010-02-18 19:57:35

+0

謝謝。我從NSXMLParser返回文本後發生崩潰。我的問題是,是不是一個新的對象返回的索引路徑?當它被方法返回時,它不會增加引用計數嗎? – 2011-02-25 21:07:51

2

這僅僅是猜測,因爲不是所有的代碼是存在的。在你的Transaction類的init方法中,你確保保留字符串嗎? (類別和說明)。

對我而言,突出的事情是您初始化事務,然後立即釋放categoryString。如果你不保留字符串,那麼這可能是你崩潰的根源。

在旁註中,您正在泄漏內存。在這裏:

NSString *descriptionString = [[NSString alloc] init]; 
descriptionString = descriptionField.text; 

descriptionString指向一個新分配的字符串,只被重新分配給現有字符串,所以第一個字符串被泄露。你應該將其更改爲:

NSString *descriptionString; 
descriptionString = descriptionField.text; 

或者更簡單地說:

NSString *descriptionString = descriptionField.text; 
+0

我將字符串設置爲不同的屬性,我正在使用副本,也許我應該使用保留? @property(nonatomic,copy)NSString * description; 只要內存泄漏,謝謝,我一直在與發佈搞亂,因爲在研究中,我看到過分釋放對象可能導致分割錯誤。 嘗試保留現在 – nickthedude 2010-02-18 19:09:20

+0

我認爲,解決了這個問題,雖然程序仍然不是很正常,但我認爲就是這樣。謝謝 – nickthedude 2010-02-18 19:12:09

+0

屬性聲明隻影響getter和setter,而不是init函數,所以如果你沒有在init方法中使用setter函數,問題可能依然存在。很高興我的解決方案幫助。 – bobDevil 2010-02-18 19:25:17