#iphone #ios
#iPhone #iOS
Вопрос:
Я вижу эту строку в одном из образцов Apple…
if (amp;ADBannerContentSizeIdentifierPortrait != nil)
что именно этот амперсанд делает это?
Спасибо
Комментарии:
1. что это за объект
ADBannerContentSizeIdentifierPortrait
?2. хороший вопрос. Это переменная из iAd Framework.
Ответ №1:
Амперсанд в C и языках, которые «являются производными» от него (например, C и Objective-C), возвращает адрес переменной (вместо содержимого).
В этом случае происходит следующее: переменная ADBannerContentSizeIdentifierPortrait
является слабо связанной переменной. Это означает, что во время выполнения он может отсутствовать (это имеет место в более старых версиях ОС). Теперь, если переменная действительно существует, амперсанд возвращает адрес. Если в ОС еще нет этой переменной, возвращается амперсанд nil
.
Итак, вкратце: выражение проверяет, предоставляет ли ОС уже переменную ADBannerContentSizeIdentifierPortrait
. Согласно документации, эта переменная существует с iOS 4.2, поэтому тело if
выражения выполняется только на iOS> = 4.2.
Комментарии:
1. После публикации я начал подозревать, что причиной может быть что-то подобное, но ваш ответ ответил больше, чем я себе представлял. Спасибо.
Ответ №2:
Амперсанд отображает ссылку на данные. ADBannerContentSizeIdentifierPortrait — это простое перечисляемое значение, и поэтому само по себе не может быть нулевым, но его ссылка может быть. Пожалуйста, добавьте больше кода, если вам нужен более подробный ответ.
Комментарии:
1.
ADBannerContentSizeIdentifierPortrait
это не «перечисляемое значение», это константа NSString .2. Исправьте, моя ошибка — хотя основная идея все еще актуальна.