ИНВАЛИДНЫЙ словарь 0). Почему я получаю эту ошибку?

Я получаю это сообщение только в первый раз, когда я касаюсь верхней строки поиска таблицы.

INVALID dictionary 0 ) INVALID dictionary 0 ) 

Все по-прежнему работают после предупреждения, но я предпочитаю этого не видеть. Кто-то знает, почему я получаю это сообщение?

Спасибо за прочтение.

3 Solutions collect form web for “ИНВАЛИДНЫЙ словарь 0). Почему я получаю эту ошибку?”

Кажется, это не ошибка iOS 4.2. Что-то другое. Иногда я получаю эту проблему с 4.2. Я не уверен, но я заметил, что эта ошибка иногда возникает, когда я не использую локализацию en_US, например, испанский.

Теперь, с iOS 4.2. Я больше не получаю эту проблему. Я думаю, что это была ошибка 4.0. версия.

Я получил эту проблему под управлением iOS 4.3.6 -[UIResponder becomeFirstResponder] , в результате чего появился следующий результат:

  INVALID dictionary 0 ) WARNING: Input manager failed to load static dictionary for: nl_NL INVALID dictionary 0 ) 

WARNING напомнило мне, что ранее я использовал голландскую клавиатуру для тестирования. Удаление этой клавиатуры с помощью настроек iOS избавило меня от предупреждения.

Это явно недействительное решение, если ваше приложение поддерживает несколько языков, но для моих целей это было приемлемо. Надежда помогает кому-то.

  • Установка reuseIdentifier на раскадровке приводит к тому, что пользовательский UITableViewCell не отображается
  • ios перемещает событие касания между двумя uiscrollview
  • RealTime Reload UITableview без «указателя вне диапазона» swift
  • Какао: Почему мой стол выглядит пустым?
  • UITableViewAutomaticDimension
  • Загрузите AQGridViewCell из XIB (не работает)
  • Могу ли я заставить UITableView скрывать разделитель между пустыми ячейками?
  • Как создать вкладку Airbnb iOS App Explore?
  • С Realm, должен ли я использовать объект List или объект Results в качестве источника данных для UITableView?
  • Объединение UISwitch и UITableViewCell для взаимодействия с VoiceOver
  • Неверная информация, отображаемая на SecondViewController, когда нажата строка таблицы
  • Парсы и Свифт. Получите ячейки в UITableView, которые имеют галочку. Msgstr "Невозможно вызвать аргумент."
  • Отправленные нажатия в Парсе – 0

    Поэтому есть много вопросов и ответов, но никто из них не работает для меня. Когда я перехожу на панель анализа синтаксиса, у меня есть 2 устройства в каждом, но когда я посылаю push, он говорит, что нажатие посылает 0. Они оба устройства iOS, и я использую push-портал с сертификатом разработки.p12.

    Что мне не хватает?

    введите описание изображения здесь

    введите описание изображения здесь

    введите описание изображения здесь

    введите описание изображения здесь

    введите описание изображения здесь

    One Solution collect form web for “Отправленные нажатия в Парсе – 0”

    Если вы не получили уведомление на своем устройстве, возможно, вы забыли вызвать метод initializeNotificationServices в didFinishLaunchingWithOptions

     func initializeNotificationServices() -> Void { let settings = UIUserNotificationSettings(forTypes: [ .Sound, .Alert, .Badge], categories: nil) UIApplication.sharedApplication().registerUserNotificationSettings(settings) print("initialize") // This is an asynchronous method to retrieve a Device Token // Callbacks are in AppDelegate.swift // Success = didRegisterForRemoteNotificationsWithDeviceToken // Fail = didFailToRegisterForRemoteNotificationsWithError UIApplication.sharedApplication().registerForRemoteNotifications() } func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { let installation = PFInstallation.currentInstallation() installation.setDeviceTokenFromData(deviceToken) installation.saveInBackground() print("didRegisterForRemoteNotificationsWithDeviceToken") } func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) { if error.code == 3010 { print("Push notifications are not supported in the iOS Simulator.") } else { print("application:didFailToRegisterForRemoteNotificationsWithError: %@", error) } } func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { PFPush.handlePush(userInfo) print("didReceiveRemoteNotification") if application.applicationState == UIApplicationState.Inactive { PFAnalytics.trackAppOpenedWithRemoteNotificationPayload(userInfo) } } 

    И метод:

     func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. Parse.setApplicationId("MyID", clientKey: "MyKey") if application.applicationState != UIApplicationState.Background { // Track an app open here if we launch with a push, unless // "content_available" was used to trigger a background push (introduced in iOS 7). // In that case, we skip tracking here to avoid double counting the app-open. let preBackgroundPush = !application.respondsToSelector("backgroundRefreshStatus") let oldPushHandlerOnly = !self.respondsToSelector("application:didReceiveRemoteNotification:fetchCompletionHandler:") var pushPayload = false if let options = launchOptions { pushPayload = options[UIApplicationLaunchOptionsRemoteNotificationKey] != nil } if (preBackgroundPush || oldPushHandlerOnly || pushPayload) { PFAnalytics.trackAppOpenedWithLaunchOptions(launchOptions) } } if application.respondsToSelector("registerUserNotificationSettings:") { let userNotificationTypes = [UIUserNotificationType.Alert, UIUserNotificationType.Badge, UIUserNotificationType.Sound] let settings = UIUserNotificationSettings(forTypes: [UIUserNotificationType.Alert, UIUserNotificationType.Badge, UIUserNotificationType.Sound], categories: nil) application.registerUserNotificationSettings(settings) application.registerForRemoteNotifications() print("register") } else { let types = [UIRemoteNotificationType.Badge, UIRemoteNotificationType.Alert, UIRemoteNotificationType.Sound] application.registerForRemoteNotificationTypes([UIRemoteNotificationType.Badge, UIRemoteNotificationType.Alert, UIRemoteNotificationType.Sound]) } initializeNotificationServices() return true } 
  • Установка reuseIdentifier на раскадровке приводит к тому, что пользовательский UITableViewCell не отображается
  • ios перемещает событие касания между двумя uiscrollview
  • RealTime Reload UITableview без «указателя вне диапазона» swift
  • Какао: Почему мой стол выглядит пустым?
  • UITableViewAutomaticDimension
  • Загрузите AQGridViewCell из XIB (не работает)
  • Могу ли я заставить UITableView скрывать разделитель между пустыми ячейками?
  • Как создать вкладку Airbnb iOS App Explore?
  • С Realm, должен ли я использовать объект List или объект Results в качестве источника данных для UITableView?
  • Объединение UISwitch и UITableViewCell для взаимодействия с VoiceOver
  • Неверная информация, отображаемая на SecondViewController, когда нажата строка таблицы
  • Парсы и Свифт. Получите ячейки в UITableView, которые имеют галочку. Msgstr "Невозможно вызвать аргумент."
  • Приложение замерзает в реализации «заглянуть и поп» в iPhone 6s
  • Самонастраивающиеся ячейки с асинхронной загрузкой изображений
  • Ошибка sigabrt, вызывающая segue программно в быстрой
  • Как сделать легкую миграцию CoreData в Swift
  • Градиент сверху / бот прокрутки, когда есть дополнительный контент
  • Создание квадрата, пилы и синуса Образец и запись в файл AIFF - проблемы большого числа
  • Swift - «sharedApplication недоступен». Вместо этого используйте решения на основе контроллера взглядов
  • IOS Swift и Facebook SDK
  • Swift: нижний колонтитул UICollectionView не отображается
  • как использовать uiswitch для выбора категории в swift?
  • Как «addQuantitiesFromSamples» в HealthKit?
  • iOS 11 отключить функцию просмотра автозаполнения пароля?
  • 0 Не работает в вводе типа валюты

    Я беру данные в виде валюты, например, 54 получает значение 0,54, но когда я пытаюсь ввести 100, я получаю только 0,1. Код не работает на 0 . Вы не можете ввести значение как 100.00 . Код, который я использую,

      (BOOL)textField:(UITextField *)transactionAmount shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *substring = transactionAmount.text; substring = [substring stringByAppendingString:string]; NSLog(@"Text : %@",substring); NSString *cleanCentString = [[transactionAmount.text componentsSeparatedByCharactersInSet: [[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""]; // Parse final integer value NSInteger centAmount = cleanCentString.integerValue; // Check the user input if (string.length > 0) { // Digit added centAmount = centAmount * 10 + string.integerValue; } else { // Digit deleted centAmount = centAmount / 10; } // Update call amount value NSNumber *amount = [[NSNumber alloc] initWithFloat:(float)centAmount / 100.0f]; // Write amount with currency symbols to the textfield NSNumberFormatter *_currencyFormatter = [[NSNumberFormatter alloc] init]; // [_currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; [_currencyFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; [_currencyFormatter setCurrencyCode:@"USD"]; [_currencyFormatter setNegativeFormat:@"-¤#,##0.00"]; self.transactionAmount.text = [_currencyFormatter stringFromNumber:amount]; // [self SetMainMessage:customTipsValue.text]; return NO; } 

    2 Solutions collect form web for “0 Не работает в вводе типа валюты”

    Большая часть вашей первоначальной «струйной очистки» неверна, а ваш формат форматирования неверен. Это должно быть примерно так:

     - (BOOL)textField:(UITextField *)transactionAmount shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *substring = transactionAmount.text; substring = [substring stringByReplacingCharactersInRange:range withString:string]; NSLog(@"New Text : %@",substring); NSString *cleanCentString = [[substring componentsSeparatedByCharactersInSet: [[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""]; // Parse final integer value NSInteger centAmount = cleanCentString.integerValue; // Update call amount value NSNumber *amount = [[NSNumber alloc] initWithFloat:centAmount / 100.0f]; // NOTE: make this an instance variable and set it up just once // Write amount with currency symbols to the textfield NSNumberFormatter *_currencyFormatter = [[NSNumberFormatter alloc] init]; [_currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; [_currencyFormatter setCurrencyCode:@"USD"]; [_currencyFormatter setNegativeFormat:@"-¤#,##0.00"]; self.transactionAmount.text = [_currencyFormatter stringFromNumber:amount]; return NO; } 

    Если по какой-то причине вы хотите использовать формат «Десятичный» вместо формата «Валюта», убедитесь, что минимальные и максимальные цифры (десятичные разряды) установлены на 2.

    Вы действительно хотите жестко установить USD? Как насчет людей, использующих приложение в других странах?

    Ваша первоначальная чистка строк не помогла пользователю правильно вырезать, скопировать или вставить. Он также использовал неправильный текст для создания cleanCentString .

    Я понял, что

    Если введенное значение равно 0, вы хотите 0.

    Если введенное значение находится между 1 и 99, вы хотите от 0,01 до 0,99.

    Если введенное значение равно 1 или более, вы хотите 1.00, как мудрый.

    Почему бы вам не поступить так, как float requiredCurrency=inputCurrency/100.0f;

  • Установка reuseIdentifier на раскадровке приводит к тому, что пользовательский UITableViewCell не отображается
  • ios перемещает событие касания между двумя uiscrollview
  • RealTime Reload UITableview без «указателя вне диапазона» swift
  • Какао: Почему мой стол выглядит пустым?
  • UITableViewAutomaticDimension
  • Загрузите AQGridViewCell из XIB (не работает)
  • Могу ли я заставить UITableView скрывать разделитель между пустыми ячейками?
  • Как создать вкладку Airbnb iOS App Explore?
  • С Realm, должен ли я использовать объект List или объект Results в качестве источника данных для UITableView?
  • Объединение UISwitch и UITableViewCell для взаимодействия с VoiceOver
  • Неверная информация, отображаемая на SecondViewController, когда нажата строка таблицы
  • Парсы и Свифт. Получите ячейки в UITableView, которые имеют галочку. Msgstr "Невозможно вызвать аргумент."
  • Приложение замерзает в реализации «заглянуть и поп» в iPhone 6s
  • Самонастраивающиеся ячейки с асинхронной загрузкой изображений
  • Ошибка sigabrt, вызывающая segue программно в быстрой
  • Как сделать легкую миграцию CoreData в Swift
  • Градиент сверху / бот прокрутки, когда есть дополнительный контент
  • Создание квадрата, пилы и синуса Образец и запись в файл AIFF - проблемы большого числа
  • Swift - «sharedApplication недоступен». Вместо этого используйте решения на основе контроллера взглядов
  • IOS Swift и Facebook SDK
  • Swift: нижний колонтитул UICollectionView не отображается
  • как использовать uiswitch для выбора категории в swift?
  • Как «addQuantitiesFromSamples» в HealthKit?
  • iOS 11 отключить функцию просмотра автозаполнения пароля?
  • Swift: captureOutput не вызывается
  • оставшееся время до завершения зарядки, iOS
  • Сжатие UIImage
  • Ширина UITableViewCell по умолчанию в iphone 6
  • Как использовать один IBAction для нескольких кнопок в Swift?
  • Image Manipulation Filter, например, баланс белого, экспозиция, разделение тона и т. Д. На IOS
  • Regex для удаления HTML-заголовка
  • Как получить уровень громкости звука, а громкость изменила уведомления на iOS?
  • Методы тестирования модулей с I / O в iOS
  • Определение членов и свойств в Xcode 4 и iOS 4
  • Как интегрировать основные данные в существующее приложение?
  • Вызов веб-службы в фоновом режиме - iOS
  • Сбой с : индекс 0 за пределами для ошибки пустого массива

    Я получаю отчеты о сбоях через пользователей моего приложения iOS, но сбой я не могу воспроизвести сам, и я не могу отследить ошибку до строки в моем собственном коде (кроме того, что она возникает из строки 14 в main.m, но это приложение приложений по умолчанию для приложений iOS. Ниже отчета о сбоях, который я получил.

    Поймите, что в какой-то момент объект находится в индексе 0, извлекается из пустого массива. Но поскольку это, похоже, не указывает на мой собственный код, может ли это быть ошибкой в ​​iOS? (Это происходит на разных платформах и с разными версиями iOS).

    Я надеюсь, что у кого-то есть представление о том, что происходит, или может указать мне в правильном направлении. Благодарю.

    ОТЧЕТ О СБОЕ:

    Incident Identifier: [TODO] CrashReporter Key: [TODO] Process: Mary Black [797] Path: /var/mobile/Applications/28A68F8B-294E-4B86-9E75-ED5484E5EF4D/Mary Black.app/Mary Black Identifier: net.broset.Mary-Black Version: 225 Code Type: ARM (Native) Parent Process: launchd [1] Date/Time: 2011-10-14 03:47:32 +0000 OS Version: iPhone OS 5.0 (9A334) Report Version: 104 Exception Type: SIGTRAP Exception Codes: #0 at 0x35b07848 Crashed Thread: 0 Application Specific Information: *** Terminating app due to uncaught exception \\\'NSRangeException\\\', reason: \\\'*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array\\\' Thread 0 Crashed: 0 libsystem_kernel.dylib 0x00010848 __kill + 8 1 CoreFoundation 0x000b9987 __handleUncaughtException + 75 2 libobjc.A.dylib 0x000092d1 _objc_terminate + 129 3 libc++abi.dylib 0x000043c5 _ZL19safe_handler_callerPFvvE + 77 4 libc++abi.dylib 0x00004451 operator delete(void*) + 1 5 libc++abi.dylib 0x00005825 __cxa_current_exception_type + 1 6 libobjc.A.dylib 0x00009235 objc_exception_rethrow + 13 7 CoreFoundation 0x0000f545 CFRunLoopRunSpecific + 405 8 CoreFoundation 0x0000f3a5 CFRunLoopRunInMode + 105 9 GraphicsServices 0x00003fed GSEventRunModal + 157 10 UIKit 0x00031743 UIApplicationMain + 1091 11 Mary Black 0x00002fa7 main (main.m:14) 

    4 Solutions collect form web for “Сбой с : индекс 0 за пределами для ошибки пустого массива”

    Одним из способов отладки этой проблемы является добавление Symbolic Breakpoint в objectAtIndex: это может привести к множеству обращений к объектуAtIndex: до того, как отладчик попадет на тот, который вам нужен, но он обязательно найдет его.

    Шаги в Xcode 4:

    • Просмотр> Навигаторы> Навигатор точек останова
    • нажмите «+» и выберите «Добавить символическую точку останова» во всплывающем окне
    • введите «objectAtIndex:» в текстовом поле «Символ» и нажмите «Готово».

    во время выполнения, если вы не можете определить, какой объектAtIndex: вы нажимаете, переместите ползунок в нижней части отладочного навигатора полностью вправо.

    Это остановит отладчик на линии нарушения:

    Xcode / Edit Scheme / Diagnostics / Log Exceptions.

    Эта ошибка означает, что вы пытаетесь получить объект из NSArray из позиции, где объект не найден. Другими словами: если индекс равен 0, ваш массив пуст.
    И, скорее всего, это ваш код, поскольку main () вызывает ваш код.

    Вы должны искать свой проект для всех применений objectAtIndex: и objectAtIndex: каждого из них в качестве виновника. Убедитесь, что вы никогда не вызываете его на пустой массив.

    Еще один совет: если вы знаете, что хотите получить только последний объект в массиве или знаете, что массив будет содержать только один объект, вы можете использовать lastObject вместо objectAtIndex: – он безопаснее, потому что он не будет генерировать исключение , хотя вам все равно нужно проверить nil .

  • Установка reuseIdentifier на раскадровке приводит к тому, что пользовательский UITableViewCell не отображается
  • ios перемещает событие касания между двумя uiscrollview
  • RealTime Reload UITableview без «указателя вне диапазона» swift
  • Какао: Почему мой стол выглядит пустым?
  • UITableViewAutomaticDimension
  • Загрузите AQGridViewCell из XIB (не работает)
  • Могу ли я заставить UITableView скрывать разделитель между пустыми ячейками?
  • Как создать вкладку Airbnb iOS App Explore?
  • С Realm, должен ли я использовать объект List или объект Results в качестве источника данных для UITableView?
  • Объединение UISwitch и UITableViewCell для взаимодействия с VoiceOver
  • Неверная информация, отображаемая на SecondViewController, когда нажата строка таблицы
  • Парсы и Свифт. Получите ячейки в UITableView, которые имеют галочку. Msgstr "Невозможно вызвать аргумент."
  • Приложение замерзает в реализации «заглянуть и поп» в iPhone 6s
  • Самонастраивающиеся ячейки с асинхронной загрузкой изображений
  • Ошибка sigabrt, вызывающая segue программно в быстрой
  • Как сделать легкую миграцию CoreData в Swift
  • Градиент сверху / бот прокрутки, когда есть дополнительный контент
  • Создание квадрата, пилы и синуса Образец и запись в файл AIFF - проблемы большого числа
  • Swift - «sharedApplication недоступен». Вместо этого используйте решения на основе контроллера взглядов
  • IOS Swift и Facebook SDK
  • Swift: нижний колонтитул UICollectionView не отображается
  • как использовать uiswitch для выбора категории в swift?
  • Как «addQuantitiesFromSamples» в HealthKit?
  • iOS 11 отключить функцию просмотра автозаполнения пароля?
  • Swift: captureOutput не вызывается
  • оставшееся время до завершения зарядки, iOS
  • Сжатие UIImage
  • Ширина UITableViewCell по умолчанию в iphone 6
  • Как использовать один IBAction для нескольких кнопок в Swift?
  • Image Manipulation Filter, например, баланс белого, экспозиция, разделение тона и т. Д. На IOS
  • Regex для удаления HTML-заголовка
  • Как получить уровень громкости звука, а громкость изменила уведомления на iOS?
  • Методы тестирования модулей с I / O в iOS
  • Определение членов и свойств в Xcode 4 и iOS 4
  • Как интегрировать основные данные в существующее приложение?
  • Вызов веб-службы в фоновом режиме - iOS
  • Почему я не могу сравнить количество нового массива?
  • массив float * в NSArray, iOS
  • Сортировка UITableView в разделы по дате из массива событий
  • как решить проблему: «Метод экземпляра» -arrayByPerformingSelector: «не найден (тип возврата по умолчанию -« id »)»
  • Наблюдающий счет в NSMutableArray
  • Копирование NSDictionary в NSArray
  • ios - с условием
  • как удалить пробелы, скобки и «от nsarray
  • Как заменить объект в NSMutableArray на данный индекс новым объектом
  • Определение индексов изменений NSArray / NSMutableArray
  • iPhone SDK Xcode - Как получить все имена файлов в документах
  • iOS NSDictionary сохраняется в NSUserDefaults, не сохраняя значения
  • – с двойным значением производит 0 неожиданно

    Я пытаюсь вызвать метод, который возвращает double используя NSInvocation . Но я обнаружил, что он не работает в 64-битных приложениях iOS. Он работает на OS X, в симуляторе – и 32-битном, и 64-битном – iPad 2, и iPad Air с 32-битной сборкой. Эта проблема связана только с 64-разрядной версией устройства iPad Air.

    Это код для демонстрации проблемы:

     NSMethodSignature *signature = [NSString instanceMethodSignatureForSelector:@selector(doubleValue)]; for (int i = 0; i < 10; i++) { NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; NSString *str = [NSString stringWithFormat:@"%d", i]; [invocation setTarget:str]; [invocation setSelector:@selector(doubleValue)]; [invocation invoke]; union { double d; uint64_t u; } d; [invocation getReturnValue:&d.d]; NSLog(@"%lf, %llx", dd, du); } 

    ожидаемый результат

     2013-11-09 22:34:18.645 test[49075:907] 0.000000, 0 2013-11-09 22:34:18.647 test[49075:907] 1.000000, 3ff0000000000000 2013-11-09 22:34:18.648 test[49075:907] 2.000000, 4000000000000000 2013-11-09 22:34:18.649 test[49075:907] 3.000000, 4008000000000000 2013-11-09 22:34:18.650 test[49075:907] 4.000000, 4010000000000000 2013-11-09 22:34:18.651 test[49075:907] 5.000000, 4014000000000000 2013-11-09 22:34:18.652 test[49075:907] 6.000000, 4018000000000000 2013-11-09 22:34:18.653 test[49075:907] 7.000000, 401c000000000000 2013-11-09 22:34:18.654 test[49075:907] 8.000000, 4020000000000000 2013-11-09 22:34:18.654 test[49075:907] 9.000000, 4022000000000000 

    Выход для 64-битной сборки на iPad Air

     2013-11-09 22:33:55.846 test[998:60b] 0.000000, 18710a969 2013-11-09 22:33:55.847 test[998:60b] 0.000000, 18710a969 2013-11-09 22:33:55.848 test[998:60b] 0.000000, 18710a969 2013-11-09 22:33:55.848 test[998:60b] 0.000000, 18710a969 2013-11-09 22:33:55.849 test[998:60b] 0.000000, 18710a969 2013-11-09 22:33:55.849 test[998:60b] 0.000000, 18710a969 2013-11-09 22:33:55.850 test[998:60b] 0.000000, 18710a969 2013-11-09 22:33:55.850 test[998:60b] 0.000000, 18710a969 2013-11-09 22:33:55.851 test[998:60b] 0.000000, 18710a969 2013-11-09 22:33:55.851 test[998:60b] 0.000000, 18710a969 

    Это также происходит для значения float .

     2013-11-09 23:51:10.021 test[1074:60b] -0.000000, 80000000 2013-11-09 23:51:10.023 test[1074:60b] -0.000000, 80000000 2013-11-09 23:51:10.024 test[1074:60b] -0.000000, 80000000 2013-11-09 23:51:10.024 test[1074:60b] -0.000000, 80000000 2013-11-09 23:51:10.025 test[1074:60b] -0.000000, 80000000 2013-11-09 23:51:10.026 test[1074:60b] -0.000000, 80000000 2013-11-09 23:51:10.026 test[1074:60b] -0.000000, 80000000 2013-11-09 23:51:10.027 test[1074:60b] -0.000000, 80000000 2013-11-09 23:51:10.027 test[1074:60b] -0.000000, 80000000 2013-11-09 23:51:10.028 test[1074:60b] -0.000000, 80000000 

    3 Solutions collect form web for “– с двойным значением производит 0 неожиданно”

    Согласовано с @David H, что NSInvocation в этом случае нарушена, или, возможно, метод NSString doubleValue . Однако я смог заставить его работать.

    Мне кажется, что NSInvocation нарушается из-за проблемы / несоответствия вызывающего соглашения. Как правило, параметры и возвращаемые значения для целей-c-методов передаются в регистры. ( objc_msgSend знает, как выполнить этот тип вызова.) Но если параметр или возвращаемое значение является структурой или типом, который не помещается в регистр, они передаются в стек. ( objc_msgSend_stret выполняет этот тип вызова.) NSInvocation обычно использует подпись метода, чтобы иметь возможность решить, нужно ли ему вызывать objc_msgSend или objc_msgSendStret . Я предполагаю, что теперь он также должен знать, на какой платформе он работает, и вот где ошибка.

    Я немного поиграл с вашим кодом, и кажется, что на arm64 двойное возвращаемое значение передается как структура, но NSInvocation рассматривает его как переданный в регистр. Я понятия не имею, какая из сторон правильная. (Я знаю, что достаточно только в этой области, чтобы быть опасным. Мои пальцы пересекаются с кем-то с более низкоуровневыми отбивными, чем я, и читаю это, и дает лучшее объяснение!)

    Тем не менее, мне кажется, что есть значительные изменения в том, как параметры и результаты передаются в руке (32 бит) против arm64. См. Разделы « Возврат результата» как в стандартном стандарте вызова ARM, так и в командах ARM64 и ARM. Стандартный вызов (не 64 бит).

    Я смог заставить NSInvocation обрабатывать вызов, возвращая структуру, содержащую double, и это заставило ее работать должным образом. Для этого я подделал сигнатуру метода поддельной подписи метода, возвращающего структуру. Я поместил это в категорию NSString но он мог жить где угодно.

    Не зная, что конкретно нарушено, или что произойдет, когда оно будет исправлено, я вряд ли отправил бы код с этим «исправлением». Я найду другое решение.

     typedef struct { double d; } doubleStruct; @interface NSString (TS) - (doubleStruct) ts_doubleStructValue; @end @implementation NSString (TS) - (doubleStruct) ts_doubleStructValue { doubleStruct ds; return ds; } @end - (void) test { NSMethodSignature *signature = [NSString instanceMethodSignatureForSelector: @selector( ts_doubleStructValue )]; for (int i = 0; i < 10; i++) { NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; NSString *str = [NSString stringWithFormat:@"%d", i]; [invocation setTarget:str]; [invocation setSelector:@selector(doubleValue)]; [invocation invoke]; double d; [invocation getReturnValue: &d]; NSLog(@"%lf", d); } } 

    У вас нет надежды заставить это работать в настоящее время. Я пробовал много вариантов вашего кода и тестировал на iPhone 5S и последний симулятор в режиме 32 и 64 бит, но это должно быть ошибкой с arm64, поскольку 64-битный симулятор работает просто отлично.

    Поэтому сначала я модифицировал свой код, чтобы попробовать всевозможные варианты, и получается, что с помощью функции floatValue не получается. Поскольку размер поплавка является общим, это уменьшает количество переменных между различными пробными платформами.

    Кроме того, я попытался использовать цель NSNumber, созданную с использованием интегрального метода и метода float: метод float фактически приводит к сбою! Я пробовал другие параметры, такие как сохранение строки и установка настройки сохранения вызова, без изменений.

    Я ввел ошибку об этом: 15441447: NSInvocation fails only on arm64 devices – любой, кого это беспокоит, может обмануть его. Я также загрузил демонстрационный проект.

    Код, который я загрузил:

     - (void)test { NSMethodSignature *signature = [NSString instanceMethodSignatureForSelector:@selector(floatValue)]; for (int i = 0; i < 10; i++) { NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; #if 0 NSString *str = [NSString stringWithFormat:@"%d", i]; [invocation setTarget:str]; // fails on iPhone 5s #else //[invocation setTarget:[NSNumber numberWithFloat:(float)i]]; // crashes in 'invoke' on iPhone 5s, works fine in simulator [invocation setTarget:[NSNumber numberWithInteger:i]]; // fails on iphone 5S #endif [invocation setSelector:@selector(floatValue)]; [invocation invoke]; float f; [invocation getReturnValue:&f]; NSLog(@"%f", f); } } 

    Исправлено на основе ответа @TomSwift.

      - (void)testInvocation { NSInvocation *invocation = [[self class] invocationWithObject:self selector:@selector(getAFloat)]; [invocation setTarget:self]; [invocation invoke]; double d; [invocation getReturnValue: &d]; NSLog(@"d == %f", d); return YES; } + (NSInvocation *)invocationWithObject:(id)object selector:(SEL)selector { NSMethodSignature *sig = [object methodSignatureForSelector:selector]; if (!sig) { return nil; } #ifdef __LP64__ BOOL isReturnDouble = (strcmp([sig methodReturnType], "d") == 0); BOOL isReturnFloat = (strcmp([sig methodReturnType], "f") == 0); if (isReturnDouble || isReturnFloat) { typedef struct {double d;} doubleStruct; typedef struct {float f;} floatStruct; NSMutableString *types = [NSMutableString stringWithFormat:@"%s@:", isReturnDouble ? @encode(doubleStruct) : @encode(floatStruct)]; for (int i = 2; i < sig.numberOfArguments; i++) { const char *argType = [sig getArgumentTypeAtIndex:i]; [types appendFormat:@"%s", argType]; } sig = [NSMethodSignature signatureWithObjCTypes:[types UTF8String]]; } #endif NSInvocation *inv = [NSInvocation invocationWithMethodSignature:sig]; [inv setSelector:selector]; return inv; } 
  • Установка reuseIdentifier на раскадровке приводит к тому, что пользовательский UITableViewCell не отображается
  • ios перемещает событие касания между двумя uiscrollview
  • RealTime Reload UITableview без «указателя вне диапазона» swift
  • Какао: Почему мой стол выглядит пустым?
  • UITableViewAutomaticDimension
  • Загрузите AQGridViewCell из XIB (не работает)
  • Могу ли я заставить UITableView скрывать разделитель между пустыми ячейками?
  • Как создать вкладку Airbnb iOS App Explore?
  • С Realm, должен ли я использовать объект List или объект Results в качестве источника данных для UITableView?
  • Объединение UISwitch и UITableViewCell для взаимодействия с VoiceOver
  • Неверная информация, отображаемая на SecondViewController, когда нажата строка таблицы
  • Парсы и Свифт. Получите ячейки в UITableView, которые имеют галочку. Msgstr "Невозможно вызвать аргумент."
  • Приложение замерзает в реализации «заглянуть и поп» в iPhone 6s
  • Самонастраивающиеся ячейки с асинхронной загрузкой изображений
  • Ошибка sigabrt, вызывающая segue программно в быстрой
  • Как сделать легкую миграцию CoreData в Swift
  • Градиент сверху / бот прокрутки, когда есть дополнительный контент
  • Создание квадрата, пилы и синуса Образец и запись в файл AIFF - проблемы большого числа
  • Swift - «sharedApplication недоступен». Вместо этого используйте решения на основе контроллера взглядов
  • IOS Swift и Facebook SDK
  • Swift: нижний колонтитул UICollectionView не отображается
  • как использовать uiswitch для выбора категории в swift?
  • Как «addQuantitiesFromSamples» в HealthKit?
  • iOS 11 отключить функцию просмотра автозаполнения пароля?
  • Swift: captureOutput не вызывается
  • оставшееся время до завершения зарядки, iOS
  • Сжатие UIImage
  • Ширина UITableViewCell по умолчанию в iphone 6
  • Как использовать один IBAction для нескольких кнопок в Swift?
  • Image Manipulation Filter, например, баланс белого, экспозиция, разделение тона и т. Д. На IOS
  • Regex для удаления HTML-заголовка
  • Как получить уровень громкости звука, а громкость изменила уведомления на iOS?
  • Методы тестирования модулей с I / O в iOS
  • Определение членов и свойств в Xcode 4 и iOS 4
  • Как интегрировать основные данные в существующее приложение?
  • Вызов веб-службы в фоновом режиме - iOS
  • Почему я не могу сравнить количество нового массива?
  • массив float * в NSArray, iOS
  • Сортировка UITableView в разделы по дате из массива событий
  • как решить проблему: «Метод экземпляра» -arrayByPerformingSelector: «не найден (тип возврата по умолчанию -« id »)»
  • Наблюдающий счет в NSMutableArray
  • Копирование NSDictionary в NSArray
  • ios - с условием
  • как удалить пробелы, скобки и «от nsarray
  • Как заменить объект в NSMutableArray на данный индекс новым объектом
  • Определение индексов изменений NSArray / NSMutableArray
  • iPhone SDK Xcode - Как получить все имена файлов в документах
  • iOS NSDictionary сохраняется в NSUserDefaults, не сохраняя значения
  • Ошибка EXC_BAD_ACCESS на arm64 при использовании NSInvocation
  • Определение класса Objective-C без базового класса - предупреждение компилятора
  • Есть ли способ наблюдать за каждым вызовом сообщений, вызываемым на объекте (iOS)?
  • Как создать объект NSInvocation с помощью метода, который принимает указатель на объект в качестве аргумента
  • который лучше использовать из методов NSInvocation или NSNotificationCentre или Delegate
  • Определить, является ли (void *) указатель из NSInvocation getArgument объектным или примитивным
  • Есть ли альтернатива для NSInvocation в Swift?
  • Interesting Posts

    Как добавить desclecting в UICollectionView, но без множественного выбора?

    не может завершить покупки в режиме Sandbox для покупки приложения в iPhone

    AVCaptureTorchModeAuto не постоянно обновляет режим факела

    Быстрая ленивая загрузка Alamofire запрос

    чередование между панелью инструментов / панелью вкладок

    Как svn добавить filename@2.png?

    Как сообщить всем моим ограничениям автоматического макета, чтобы обновить себя? (Например, когда пользователь обновляет свой размер системы / Динамический тип)?

    iOS перехватывает весь сетевой трафик из моего приложения?

    response-native: ListView, как нажимать новые строки сверху

    Работа с иерархическими эффектами в играх iOS и приложениях

    Типы HTTP-аутентификации и как создать безопасную базу данных?

    Сканирование QR-кода в приложении ios

    Для приложения PhoneGap требуется исходный код iOS для фоновой службы?

    Не все комментарии видны, когда вытаскиваете сообщение, используя API-интерфейс Facebook graph iphone

    RxSwift – Debounce / Throttle "inverse"

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.