Метод, вызывающий странный сбой

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

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

  2. Обычно в консоли отладки есть некоторая информация, где я могу, по крайней мере, получить представление о том, что происходит, но, похоже, ее не так много. Одна вещь, которую я заметил, заключается в том, что когда приложение изначально запускается в симуляторе, что-то связано с включением специальных возможностей или что-то в этом роде, я не могу вспомнить, есть ли это всегда или нет:

18 февраля 2010 г. 10: 35: 19.024 Денежные средства [497: 207] ******* Статус доступности изменен: 18 февраля 2010 г. 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];

вот вывод консоли:

18.02.10 10:35:19 Денежные средства [497] ********** Загрузка AX для: com.yourcompany.Cash ************ 18.02 / 10 10:35:28 Денежные средства [497] 0.000000, sddssd, Snacks, 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 AM 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

вот журнал сбоев:

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

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

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

Информация о приложении: имя селектора 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
0x026bb87e CFRunLoopRunSpecific + 4094 4 CoreFoundation
0x026ba878 CFRunLoopRunInMode + 88 5 GraphicsServices
0x02f1da4d GSEventRunModal + 217 6
GraphicsServices
0x02f1db12 GSEventRunInMode + 115 7x02 + 102 (main.m: 13) 9
Наличные
0x000025b6 start + 54

Поток 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 + 88 4 WebCore
0x03151933 RunWebThread (void *) + 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: 0x00000000 ebp: 0xbfffe158 esp: 0xbf00000000 ebp: 0xbfffe158 esp: 0xbf0000001 ddf0000: 0xbf0000008x00000 ssp: 0xbf0000008x00000 ssp: 0xbf0000001 df0000: sp: 0xbf0000001 df0000: sp: 0xbf0000001 df0000: sp: 0xbf0000001 ddx: 0x : 0x0000001f es: 0x0000001f fs: 0x00000000 gs: 0x00000037 cr2: 0x14600478

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


person nickthedude    schedule 18.02.2010    source источник
comment
спасибо, чувак, это сработало. У меня было чертовски много времени, пытаясь понять эту штуку, и это на удивление сработало, по крайней мере, в первый раз, когда вы попробовали это, но да, он был сломан. Большое спасибо, код, кажется, теперь отлично работает благодаря обоим ответам здесь, я хотел бы дать два ответа, зеленую галочку, но разрешен только один. Теперь я ухожу, чтобы попытаться решить больше проблем. :)   -  person nickthedude    schedule 18.02.2010


Ответы (2)


Вы создаете экземпляр пустого NSIndexPath, а затем перезаписываете ссылку на него. Сообщение в последней строке отправляется совершенно другому объекту, возвращаемому табличным представлением. Созданный вами объект никогда не используется и никогда не выпускается.

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;

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

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

person grahamparks    schedule 18.02.2010
comment
Спасибо. Я получал сбой после выпуска текста из возвращенного NSXMLParser. Мой вопрос: разве новый объект не возвращает индексный путь? Разве это не увеличивает счетчик ссылок, когда он возвращается методом? - person nickthedude; 18.02.2010
comment
@JackBeNimble возвращенный indexPath был создан чем-то другим. вы не управляете вещами других объектов. Освобождайте только те объекты, которые вы размещаете + init - person Jack BeNimble; 26.02.2011
comment
У меня есть строки, настроенные как разные свойства, и я использую копию, может быть, мне следует использовать сохранение? @property (неатомный, копия) NSString * описание; Что касается утечки памяти, спасибо, я возился с выпусками, потому что, исследуя это, я увидел, что ошибка сегментации может быть вызвана чрезмерным освобождением объекта. пытаюсь сохранить сейчас - person Warren Burton; 05.09.2018

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

Кстати, у вас утечка памяти. Здесь:

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

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

или проще:

NSString *descriptionString;
descriptionString = descriptionField.text;

спасибо за переформатирование dirk!

NSString *descriptionString = descriptionField.text;
person bobDevil    schedule 18.02.2010
comment
Я думаю, что это решило проблему, хотя программа все еще не работает должным образом, но я думаю, что это все. Благодарность - person nickthedude; 18.02.2010
comment
объявления свойств влияют только на методы получения и установки, но не на функцию инициализации, поэтому проблема могла бы существовать, если бы вы не использовали функцию установки в своем методе инициализации. Рад, что мое решение помогло. - person nickthedude; 18.02.2010
comment
я использовал сеттер в методе инициализации - person bobDevil; 18.02.2010
comment
Двоичные изображения: 0x1000 - 0x5ff7 + Cash ??? (???) / Пользователи / knyck2 / Библиотека / Поддержка приложений / iPhone Simulator / 3.2 / Applications / 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/PBGDBIntrospectionSupport1 (??) ‹4361202B-C361-85C9-AAD0-3D062EF44941> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/Foundation.framework2063/Foundation + 0x UIKit ??? (???) ‹524597DC-F210-115D-E31D-01A3429E25C7> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/UIKit.framework/UIKit 0x2523 .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.frameation000 +CoreLocation000 0x2799e 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 0x2a7675000 - 0x 2. дилиб ??? (???) ‹78BEDCC4-E0FD-1C59-70ED-46FB3D76055C> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/usr/lib/libxml2.2.dylib 0x2b9a000? - ?? (???) ‹24AFEAF9-230F-C79A-3A2F-BB9F1945CF9A> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/CFNetwork0000cframework + 0/2 Конфигурация системы ??? (???) ‹5448E217-DB17-F241-AB84-C2FE18372948> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/SystemConfiguration.framework7 +x2Configuration000 - +2Configuration000 - +2Configuration000 - +2 Безопасность ? ?? (???) ‹90BF3878-B2F5-8FD0-4E81-B59E64C47E1D> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/Security.framework +8x2ecurity.framework 0/8 libsqlite3.dylib ??? (???) ‹3B663A82-D85F-3CD5-130C-FAA6C5ED2D0E> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/usr/lib/libsqlite3.dylib 0x2worke6800 .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/ 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/WebCore4000x300 / WebKit ??? (???) ‹0D579ECA-E22E-7C70-A214-73D2221CD1C7> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/WebKit.Kitramework + 0/Webkit.framework ImageIO ??? (???) ‹524C2CFC-6F77-3B4F-390F-40711BB56980> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/ImageIO.frameworkfd2000IO - 0 Адресная книга ??? (???) ‹2EF304E3-4B16-5B0E-E072-BFABF4B44CF5> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/AddressBook000.framework + 0x4x3/AddressBook.framework AudioToolbox ??? (???) ‹27DC788A-231B-9DB5-0B48-04A2A8D27F32> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/AudioToolbox.framework + 0x419Toolbox. 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/Bibrary/PrivateFrameworks/SpringBoardSoftware_Framework/SpringBoard_Framework/SpringBoard_Framework/ Тех. поддержка ??? (???) /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 + 0x385 MobileCoreServices ??? (???) ‹5BFA76AC-EC1B-8D9F-4533-B3DD44041107> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/MobileCoreServices/System/Library/Frameworks/MobileCoreServices + 0x48CoreServices +framework_framework/ Корректор ??? (???) /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/CoreAudio000.framework .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/AccessibilitySettingsf46AccessibilitySettingsLoader + 0xfundles/AccessibilitySettingsLoaderLoader + 0xBundles/AccessibilitySettings/461000 + libAccessibility.dylib ??? (???) ‹9F1CEAA6-2910-7F97-A626-DAA33724ED79> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/usr/lib/libAccessibility.dylib 0x7900000b + IAP909? ?? (???) /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/workIAxUpdcibility.Framework/Urameccessibility.frame AXRuntime ??? (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/AXRuntime.framework/AXRuntime 0x79c8000 - 0x7a0afe7 + libCGFreetype.A.d (???) ‹8853F0B7-8EE5-AD36-BC97-B0AD8782E547> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/CoreGraphics.framepework/Resources/Resources/ .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 - 0x9Ind3efe7 + Text (???) /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/PrivateFrameworks/TextInput.framework/TextInput 0x9d6a000 - 0x9eafff3 + libmecabra.dylibmecabra.dyl (???) ‹1C45F15E-3F66-3F28-46C7-78EC4B63C803> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/usr/lib/libmecabra.dylib 0x9eeData1000 - 0x9eeffataff4000 - 0x9eeffataff (???) ‹6F49CC28-8102-D224-EBBD-12045B6DBA92> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk/System/Library/Frameworks/CoreData.framework/8xyldata02-data.framework/8xy00000 - 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 - person nickthedude; 18.02.2010