Сбой iPhone только тогда, когда устройство не подключено к xcode, как понять журнал сбоя? - PullRequest
2 голосов
/ 24 ноября 2011

На устройстве под управлением ios 5 мое приложение работает отлично, но на устройстве под управлением ios 4.2.1 я получаю этот сбой.Странно то, что устройство падает только тогда, когда НЕ подключено к xcode.При запуске из xcode он работает, но когда я запускаю его без xcode, приложение работает до момента, когда я вызываю метод:

- (void)startLocationUpdates
{
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
    self.locationManager.distanceFilter = 1;
    self.locationManager.delegate = self;
    [self.locationManager startUpdatingLocation];
} 

CRASH LOG:

OS Version:      iPhone OS 4.2.1 (8C148)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x3830000f
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                 0x33479462 objc_msgSend + 14
1   CoreLocation                    0x34371430 -[CLLocationManager onClientEventLocation:] + 560
2   CoreLocation                    0x3436f68e -[CLLocationManager onClientEvent:supportInfo:] + 98
3   CoreLocation                    0x3436f804 OnClientEvent + 16
4   CoreLocation                    0x3436b522 CLClientInvokeCallback(__CLClient*, CLClientEvent, __CFDictionary const*) + 42
5   CoreLocation                    0x3436d3cc CLClientHandleDaemonDataLocation(__CLClient*, CLClientLocation const*, __CFDictionary const*) + 196
6   CoreLocation                    0x3436d512 CLClientHandleDaemonData(__CFMessagePort*, long, __CFData const*, void*) + 286
7   CoreFoundation                  0x33a813fe __CFMessagePortPerform + 242
8   CoreFoundation                  0x33a556f8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 20
9   CoreFoundation                  0x33a556bc __CFRunLoopDoSource1 + 160
10  CoreFoundation                  0x33a47f76 __CFRunLoopRun + 514
11  CoreFoundation                  0x33a47c80 CFRunLoopRunSpecific + 224
12  CoreFoundation                  0x33a47b88 CFRunLoopRunInMode + 52
13  GraphicsServices                0x33b0e4a4 GSEventRunModal + 108
14  GraphicsServices                0x33b0e550 GSEventRun + 56
15  UIKit                           0x32099322 -[UIApplication _run] + 406
16  UIKit                           0x32096e8c UIApplicationMain + 664
17  MyApp                       0x00002762 0x1000 + 5986
18  MyApp                       0x00002720 0x1000 + 5920

Ответы [ 2 ]

2 голосов
/ 24 ноября 2011

Вы уверены, что self живет все время, пока используете его, и вы установили self.locationManager.delegate = nil;, прежде чем уничтожить self?

0 голосов
/ 16 мая 2013

если вы обслуживали ваше устройство ПОСЛЕ того, как оно было включено в ваш профиль обеспечения, это МОЖЕТ произойти (по крайней мере, на xcode 4.2).

сначала проверьте, соответствует ли "имя" вашего телефона "имя "в вашем профиле (при последнем обновлении в xcode).

  1. открыть Xcode
  2. нажмите на ОРГАНИЗАТОР open ORGANIZER in XCODE
  3. выберите УСТРОЙСТВА choose DEVICES
  4. в разделе БИБЛИОТЕКА щелкните ПРЕДОСТАВЛЯЮЩИЕ ПРОФИЛИ
  5. прочитайте заголовок ПРОФИЛЯ ОБЕСПЕЧЕНИЯ КОМАНДЫ iOS (у вас должен быть список «имен устройств»)
  6. ваше последнее подключенное устройство должно быть указано в разделеустройства (даже если оно не подключено в данный момент) steps 4 thru 6

проверить, есть ли ваше устройство в списке (в вашем профиле обеспечения) с тем же «именем», которое Xcode читает на нем

Я решил свою проблему,

  1. зайдя в сеть @ developer.apple.com,
  2. войдя в личный кабинет,
  3. выбрав iOS разработчика,
  4. затем выбирая СЕРТИФИКАТЫ, ETC на буровой установкеht hand menu и
  5. редактирование устройства из моего профиля обеспечения.choosing device profile for editing
  6. В XCODE, в окне PROVISIONING PROFILES (предыдущее изображение), нажмите REFRESH (внизу справа)

, альтернативно, вы можете отключить (вроде как удалить) устройство изваши профили обеспечения (на developer.apple.com), а затем все начинается сначала, как с «новым» устройством.но Apple очень требовательна к поведению разработчиков, я не стал бы заниматься удалением и воссозданием устройств, потому что они могут начать вмешиваться в вашу работу с разрешениями, и это отнимает у вас время.

очистка цепочки для ключей, особенно если вы находите вещинапример, com.apple.kerberos.kdc com.apple.systemdefault может быть другим решением, особенно если XCODE разбивается на себя (Xcode иногда падает из-за мусорной цепочки для ключей).

в крайнем случае, переустановите xcode (вы знаете, apple, если он не работает иудаление настроек не решает проблему, переустановите).

...