В чем разница между double a = a + int b и int a + = double b?

Решение для проверки версии iOS в Swift

switch (UIDevice.currentDevice().systemVersion.compare("8.0.0", options: NSStringCompareOptions.NumericSearch)) {
    case .OrderedAscending:
       println("iOS < 8.0")

    case .OrderedSame, .OrderedDescending:
       println("iOS >= 8.0")
}

Con этого решения: это просто плохая практика, чтобы проверять номера версий ОС, в зависимости от того, как вы это делаете. Поэтому никогда не следует жестко привязывать кодовые зависимости, всегда проверяйте возможности, возможности или существование класса. Учти это; Apple может выпускать обратно совместимую версию класса, если они это сделали, то код, который вы предлагаете, никогда не будет использовать его, поскольку ваша логика ищет номер версии ОС и НЕ существование класса.

( Источник этой информации )

Решение для проверки существования класса в Swift

if (objc_getClass("UIAlertController") == nil) {
   // iOS 7
} else {
   // iOS 8+
}

Не используйте if (NSClassFromString("UIAlertController") == nil), потому что он корректно работает на симуляторе iOS, используя iOS 7.1 и 8.2, но если вы протестируете на реальном устройстве с использованием iOS 7.1, вы, к сожалению, заметите, что никогда не будете проходить через часть фрагмента кода.

30
задан Radiodef 11 September 2018 в 20:39
поделиться

3 ответа

удвойтесь + международные возвраты дважды, так дважды = дважды +, интервал законен, см. JLS 5.1.2 Расширяющихся Примитивных Преобразования, с другой стороны, интервал = дважды +, интервал "Сужает Примитивное Преобразование" и требует явного броска

4
ответ дан devdimi 11 September 2018 в 20:39
поделиться
  • 1
    Большое сообщение; работы отлично. получите шестнадцатеричное число путем ввода ' xxx в hex' в Google. Нижний регистр наверняка необходим на ubuntu16 – otter606 20 May 2017 в 23:12

интервал = интервал + дважды по существу

интервал = дважды + дважды

, и Вы не можете сделать этого без кастинга...

интервал + = удваивает силы результат до интервала, в то время как другой требует кастинга.

Так = (интервал) (+ b);

должен скомпилировать.

Редактирование: согласно просьбе в комментариях... вот ссылка на большее количество чтения (не самое легкое чтение, но самая корректная информация): http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.26.2

23
ответ дан LoicAG 11 September 2018 в 20:39
поделиться
  • 1
    На *отклоняют системы I' m использование printf 0x%x изодромный с предварением для получения шестнадцатеричного значения – hascode 20 February 2018 в 22:05

В Java + = оператор имеет неявный бросок к левому типу. Это идет для всех составленных операторов.

32
ответ дан DefLog 11 September 2018 в 20:39
поделиться
  • 1
    Кто-либо знает, как этот TID может коррелироваться к дампу потока? Они don' t соответствуют " tid" или " nid" идентификаторы I' m видящий в моих дампах потока (после того, как, преобразовывая их для преобразовывания в шестнадцатеричную систему)? – Tom 8 November 2013 в 21:41
Другие вопросы по тегам:

Похожие вопросы: