Я кодировал свой типичный случайный материал в Objective-C/iOS в течение нескольких лет.Я не могу отлаживать/отключать приложение. OTOH Crashlytics iOS сообщает о некоторых сбоях в полевых условиях для некоторых пользователей: NSInvalidArgumentException
Сегодня клиент, я имею дело с придумал это, по-видимому невинной Crashlytics аварии:
Fatal Exception: NSInvalidArgumentException
0 CoreFoundation 0x193b0e1c0 \__exceptionPreprocess
1 libobjc.A.dylib 0x19254855c objc_exception_throw
2 CoreFoundation 0x193b15278 \__methodDescriptionForSelector
3 CoreFoundation 0x193b12278 \___forwarding___
4 CoreFoundation 0x193a0c59c _CF_forwarding_prep_0
5 MyProjectTargetName 0x100087518 -[BannerContainer pressed:] (BannerContainer.m:105)
6 UIKit 0x199f3059c -[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:]
7 UIKit 0x199f33ca4 _UIGestureRecognizerSendTargetActions
8 UIKit 0x199af52e8 _UIGestureRecognizerSendActions
9 UIKit 0x199993828 -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:]
10 UIKit 0x199f23ce8 _UIGestureEnvironmentUpdate
...
Дело в том, в строке 105, внутри BannerContainer.m «Bannercontainer нажата:» IBAction, есть Кажущаяся простой отведение:
if(self.banners==nil || [self.banners count]==0)
{
return;
}
NSInteger position=self.currentPosition; // both NSIntegers
if(IS_IPAD) // Macro working perfectly as of today
{
position=((UIButton *)sender).tag; // this is offending line 105
}
Согласно Crahslytics, то NSInvalidArgumentException происходит сбой в линии 105 ... Но я не могу определить какой-либо «неверный аргумент» там. Вместо этого я бы сказал, что это всего лишь кнопка, а атрибут тега (NSInteger) присваивается переменной NSInteger (отправитель ВСЕГДА имеет кнопку, так как эта функция связана с 5 UIButtons внутри файла .xib). Эти 5 кнопок имеют 5 разных тегов (0, 1, 2, 3 и 4). если отправитель равен нулю, эта строка даже не падает (я вручную установил отправитель на нуль, чтобы проверить это требование 5 минут назад).
Независимо от того, что я никогда не мог сделать, чтобы моя авария в этой строке была вызвана, поскольку, по-видимому, крашлитики говорят, что некоторые люди в поле.
Я как-то невежествен. Любой намек? Любая отладка резиновой утки, которую кто-то может направить мне? Почему Crashlytics может найти аварийное состояние, которое я не могу найти в своем развитии?
Приветствия.
EDIT: У меня нет доступа к этой учетной записи Crashlytics. Этот крах, который я опубликовал, - это просто с .txt-дамп, который мой клиент отправил нам по электронной почте. У меня нет и доступа к этим серверам производственной среды приложений ни к моей учетной записи пользователя itunes connect. Я просто доставляю свой код своему клиенту, а затем компилирует, подписывает и загружает все с помощью своих учетных записей.
@Issac Вы уверены, что всегда отправителем является UIButton? –
этот IBAction связан только с 5 UIButtons внутри xib. Я не вижу, как/почему отправитель не должен быть UIButton. Моя проблема заключается в том, что я не могу сделать эту ошибку (!!), и мне бы хотелось (как это иногда может быть, как это иногда бывает, когда Crashlytics говорит) – Isaac
Можете ли вы проверить, является ли отправитель UIButton, а затем сделать переадресацию ?, это должно исправить ваш сбой, и если это не UIButton, тогда отправляйте ошибку crashlytics, чтобы проверить, что происходит. –