Метод, вызывающий странный сбой - PullRequest
1 голос
/ 18 февраля 2010

Я создаю это приложение и сталкиваюсь с некоторыми проблемами, которых раньше не видел.

  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 ************

copyright 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];

вот консольный вывод:

2/18/10 10:35:19 AM Cash [497] ********** Загрузка AX для:com.yourcompany.Cash ************ 18.02.10 10:35:28 Денежные средства [497] 0,000000, sddssd, Закуски, 2010-02-18 10:35:28 -0800, 10.000000,10.000000 18.02.10 10:35:28 com.apple.launchd.peruser.501 [91] (UIKitApplication: com.yourcompany.Cash [0x9148] [497]) Сбой задания: ошибка сегментации18.02.10 10:35:28 SpringBoard [482] Приложение «Наличные» вышло ненормально с сигналом 11: Ошибка сегментации 18.02.10 10: 35:28 ReportCrash [491] Сохраненный отчет о сбое для версии Cash [497] ???(???) в /Users/knyck2/Library/Logs/DiagnosticReports/Cash_2010-02-18-103528_Nicholas-Iannones-MacBook-Pro.crash

вот журнал аварий:

Процесс: Наличные [497] Путь:
/ Пользователи / knyck2 / Библиотека / Поддержка приложений / iPhone Simulator / 3.2 / Приложения / F54FA00C-9E77-4B9A-8774-2D5B5488A1BA / Наличные.app / Идентификатор наличных: Cash Version:
???(???) Тип кода: X86 (собственный) Родительский процесс: launchd [91]

Дата / Время: 2010-02-18 10: 35: 28.631 -0800 Версия ОС:
Mac OS X10.6.2 (10C540) Версия отчета: 6

Тип исключения: EXC_BAD_ACCESS (SIGSEGV) Коды исключений: KERN_INVALID_ADDRESS в 0x0000000014600478 Сбой потока: 0 Очередь отправки: com.apple.main-thread

* 1042Специальная информация: имя селектора objc_msgSend (): выпуск iPhone Simulator 3.2 (193), iPhone OS 3.2 (7B298g)

Тема 0 Сбой: Очередь отправки: com.apple.main-thread 0
libobjc.A.dylib
0x9805aedb objc_msgSend + 27 * 1 * UIKit тысяча сорок семь
0x002b4a19 _UIApplicationHandleEvent + 8468 2 GraphicsServices 0x02f1f2a8 PurpleEventCallback + 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 Cash
0x00002648 main + 102 (main.m: 13) 9
Cash
0x000025b6 start + 54

Thread 1: 0 libSystem.B.dylib
0x937b88da mach_msg_trap +10 1
libSystem.B.dylib
0x937b9047 mach_msg + 68 2
CoreFoundation
0x026bb022 CFRunLoopRunSpecific + 1954 3 CoreFoundation
0x026ba878 CFRunLoopRunInMode + 10 0 0 0 0 8 0 0 0 (0) * 8 065WW (0) * 8 065WeWeOb + 1065WeWeOb + 3 * 0 065WW3W3 * 153WWW3 * 0 030W3WeOb + 3 030W3WeOb + 3 030WeWeOb + 3 0 0 0 8 0 WebSec;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 ЭРИ: 0x00000000 EBP: 0xbfffe158 особ: 0xbfffdfd4 сс: 0x0000001f EFL: 0x00010206 EIP: 0x9805aedb CS: 0x00000017 DS: 0x0000001f ES: 0x0000001f фс:0x00000000 gs: 0x00000037 cr2: 0x14600478

Двоичные изображения: 0x1000 - 0x5ff7 + Наличные ???(???) / Пользователи / knyck2 / Библиотека / Поддержка приложений / iPhone Simulator / 3.2 / Приложения / F54FA00C-9E77-4B9A-8774-2D5B5488A1BA / Cash.app / Cash 0xd000 - 0xfff7 + PBGDBIntrospectionSupport.A.dylib ???(???) <8C448816-8655-143E-DA39-C8157FDA8C8B> /Developer/Applications/Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin/Contents/Resources/PBGDBIntrospectionSupport.140 + 0x0x1x1x1x1x1x8x1x: 0x3000(???) <4361202B-C361-85C9-AAD0-3D062EF44941> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/Foundation.framework/Found 0202963 0x2963UIKit ???(???) <524597DC-F210-115D-E31D-01A3429E25C7> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/UIKit.framework/UIKit 025bec 025bex 025.apple.CoreGraphics 1.359.16 (???) <017CBE03-17D3-25FD-E775-087B415993AA> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/.Framework / CoreGraphics 0x262e000 - 0x2665ff7 + CoreLocation ???(???) <80CA49D0-A8EA-0638-A407-0CC131AEEB41> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/CoreLocation.framework/x68ef 0 0 0 0 000 000CoreFoundation ???(???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation 0x287d000 - 0x2a15fe7 + libicucore.A.lib ???(???) <13A09086-26EF-E491-ADD8-9019C31542FC> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/usr/lib/libicucore.A.dylib 0x2a76000 - 0x2a76752: lib22.делиб ???(???) <78BEDCC4-E0FD-1C59-70ED-46FB3D76055C> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/usr/lib/libxml2.2.dylib 0x2bNafe 0x2b9a000??(???) <24AFEAF9-230F-C79A-3A2F-BB9F1945CF9A> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/CFNetwork.framex 0F2 0F2 0F2cFF0workF2cfcfcfccfcccccccccccfКонфигурация системы ???(???) <5448E217-DB17-F241-AB84-C2FE18372948> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/SystemConfiguration.framework/S2d1665 0x2000x1600Безопасность ???(???) <90BF3878-B2F5-8FD0-4E81-B59E64C47E1D> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/Security.framework/2eSecurity0x7x2x0x0x7000libsqlite3.dylib ???(???) <3B663A82-D85F-3CD5-130C-FAA6C5ED2D0E> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/usr/lib/libsqlite3.dylib 0x2eef3rafra 0x2eef3: 0.IOKit 1.5.1 (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit 0x2f19000 - 0x2f26ff3???(???) <7FB2250F-CDD1-D975-0387-6E884CC061CD> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/GraphicsServicesGrax0/x0xfxer.dllJavaScriptCore ???(???) /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 + ProofReader ??? (???) /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 + UIA доступность ??? (???) <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

Ответы [ 2 ]

4 голосов
/ 18 февраля 2010

Это неправильно:

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, поэтому вы не несете ответственности за его освобождение.

(ваш ненужный выпуск приводит к преждевременному освобождению экземпляра пути индекса. Когда код Apple пытается освободить объект, он больше не существует, и приложение падает)

2 голосов
/ 18 февраля 2010

Это всего лишь предположение, так как здесь не весь код.В вашем методе init для класса Transaction вы сохраняете строки?(категория и описание).

Для меня выделяется то, что вы инициализируете транзакцию, а затем сразу после нее освобождаете categoryString.Если вы не сохраняете строку, то это может быть причиной вашего сбоя.

Кстати, вы теряете память.Здесь:

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

descriptionString указывает на вновь выделяемую строку, только для переназначения на существующую строку, поэтому первая строка пропускается.Вы должны изменить это на:

NSString *descriptionString;
descriptionString = descriptionField.text;

или более просто:

NSString *descriptionString = descriptionField.text;
...