Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Есть частный API для извлечения как DeviceColor
, так и DeviceEnclosureColor
.
UIDevice *device = [UIDevice currentDevice];
SEL selector = NSSelectorFromString(@"deviceInfoForKey:");
if (![device respondsToSelector:selector]) {
selector = NSSelectorFromString(@"_deviceInfoForKey:");
}
if ([device respondsToSelector:selector]) {
NSLog(@"DeviceColor: %@ DeviceEnclosureColor: %@", [device performSelector:selector withObject:@"DeviceColor"], [device performSelector:selector withObject:@"DeviceEnclosureColor"]);
}
Я написал об этом и предоставил пример приложения:
http://www.futuretap.com/blog/device-colors/
Предупреждение. Как уже упоминалось, это частный API. Не используйте это в сборках App Store.
Ответ на вопрос НЕТ (на данный момент) и лично Я не думаю, что это стоит того, потому что, если конечный пользователь использует скин или дополнительный корпус для своего iPhone ?
Я бы предложил сначала спросить пользователя: «Эй, какой цвет вашего телефона?» и затем сделайте соответственно.
blockquote>
Кроме того, исследование предоставило мне эту информацию, я не уверен, является ли оно ИСТИННЫМ или если оно поможет вам.
< blockquote>Серийный номер - это ключ:)
blockquote>Если
aabccdddeef
является серийным номером iPhone 4,ee
представляет цвет, (A4 = черный). Я надеюсь, что некоторые из вас здесь проверит эту информацию, чтобы узнать, правда ли это.
[IUDevice deviceColor]
. Я занимаюсь своими исследованиями и держу вас в курсе.
– totocaster
16 December 2011 в 14:02
Просто мои 2 цента стоит - если кто-то ищет цвета iPhone 5c, цвета ниже выбраны с веб-сайта яблока.
Надеюсь, что это полезно для всех: -)
iPhone 5c Цвета:
blockquote>Green R 179 G 243 B 142 HEX #B3F38E Blue R 123 G 195 B 252 HEX #7BC3FC Yellow R 255 G 243 B 141 HEX #FFF38D Red R 252 G 132 B 142 HEX #FF848E White R 239 G 239 B 239 HEX #EFEFEF
В целях отладки я собрал более полный список возможных клавиш deviceInfoForKey:
.
Интересными клавишами для записи (для этого вопроса) являются DeviceRGBColor
DeviceEnclosureRGBColor
. Значения представляют собой целое число, которое представляет значение RGB в форме 0x00rrggbb
.
Здесь, для справки, все ключи, которые я нашел:
ActiveWirelessTechnology
AirplaneMode
assistant
BasebandCertId
BasebandChipId
BasebandPostponementStatus
BasebandStatus
BatteryCurrentCapacity
BatteryIsCharging
BluetoothAddress
BoardId
BootNonce
BuildVersion
CertificateProductionStatus
CertificateSecurityMode
ChipID
CompassCalibrationDictionary
CPUArchitecture
DeviceClass
DeviceColor
DeviceEnclosureColor
DeviceEnclosureRGBColor
DeviceName
DeviceRGBColor
DeviceSupportsFaceTime
DeviceVariant
DeviceVariantGuess
DiagData
dictation
DiskUsage
EffectiveProductionStatus
EffectiveProductionStatusAp
EffectiveProductionStatusSEP
EffectiveSecurityMode
EffectiveSecurityModeAp
EffectiveSecurityModeSEP
FirmwarePreflightInfo
FirmwareVersion
FrontFacingCameraHFRCapability
HardwarePlatform
HasSEP
HWModelStr
Image4Supported
InternalBuild
InverseDeviceID
ipad
MixAndMatchPrevention
MLBSerialNumber
MobileSubscriberCountryCode
MobileSubscriberNetworkCode
ModelNumber
PartitionType
PasswordProtected
ProductName
ProductType
ProductVersion
ProximitySensorCalibrationDictionary
RearFacingCameraHFRCapability
RegionCode
RegionInfo
SDIOManufacturerTuple
SDIOProductInfo
SerialNumber
SIMTrayStatus
SoftwareBehavior
SoftwareBundleVersion
SupportedDeviceFamilies
SupportedKeyboards
telephony
UniqueChipID
UniqueDeviceID
UserAssignedDeviceName
wifi
WifiVendor
deviceInfoForKey:
является конфиденциальным. Поэтому все эти ключи тоже.
– jjrscott
26 June 2018 в 21:14
Согласно информации, разбрызганной по сети, цвет устройства кодируется в серийном номере. Блог iFixit указывает, что в третьем и втором-последнем положениях хранятся данные: xxxxxxxxCCx
Для iPhone 4 A4
указывает на черный цвет. Никто, кажется, не имеет кода для белого iPhone 4, что странно. Сообщение forum указывает, что может быть DZ
. Кажется, что все просто знакомятся с информацией друг друга.
На другом сайте mydigitallife.com есть статья, в которой перечислены цветовые коды для разных старых моделей. В некоторых случаях три позиции должны считываться вместе, чтобы определить цвет. Согласно этому сайту, все модели iPhone 3Gs имеют 3N
в позиции цветового кода; 3NP
указывает «Черный 16GB 3Gs», а 3NQ
указывает «Белые 16GB 3Gs». Оригинальный (2G) iPhone также использует все три позиции для указания размера (не было цветовых опций).
На SO уже есть ряд вопросов, которые помогут вам получить серийный номер устройства.
Нет. Невозможно обнаружить внешний цвет любого устройства.
Как отмечали другие, нет, нет официального способа получить эту информацию. Apple четко знает (смотрите в iTunes при синхронизации), поэтому они могут сделать это доступным. Возможно, стоит поднять радар .
[NSObject -respondsToSelector:]
. Ваша текущая логика может работать некорректно при освобождении iOS 8. – Aaron Brager 11 October 2013 в 20:38deviceInfoForKey:
на iOS 8. Я бы просто проверил оба селектора и посмотрел, на какой из них он отвечает. – Aaron Brager 11 October 2013 в 21:01