В ios печать адреса нулевой памяти для отображения 0x0 означает отсутствие места для хранения?

Я хочу знать разницу между nil и [NSNull null], поэтому я использую NSLog(@"nil==== =%p",nil), and NSLog(@"null====%p",[NSNull null]) для распечатки их адресов памяти, но результат печати - nil==== =0x0, null=== 0x1022c2f08, я не совсем понимаю, что означает 0x0, может ли кто-нибудь помочь мне понять?

0x0 - это шестнадцатеричный синтаксис для десятичного значения 0.
paddy 26.10.2018 05:06

Это занимает место в памяти?

JackySong 26.10.2018 05:10

Возможный дубликат iphone - [NSNull getCharacters:]:

E.Coms 26.10.2018 05:16

Это зависит от. Это ключевое слово в цели C, имеющее тот же тип, что и указатель. Если вы где-то храните значение nil, то, конечно, оно занимает память. Если вы используете его в своей программе, технически это занимает память в программном сегменте памяти. Но исходя из вашего очевидного понимания памяти, я склонен сказать, что ответ - «нет». Это, конечно, не объект, который можно создать, если вы это имеете в виду.

paddy 26.10.2018 05:17

Установка указателя на nil (ничего, 0, null) .. означает, что указатель ни на что не указывает или на адрес 0x0, он же .. 0 .. Однако .. [NSNull null] - это ОБЪЕКТ, который используется для представления nil / null в словаре, потому что словарь в iOS не может хранить значения "nil" .. IE: при синтаксическом анализе JSON iOS сохраняет "NSNull" для представления nil в словаре. Думайте о "NSNull" как о коробочной версии примитива "nil" .. "NSNull - A singleton object used to represent null values in collection objects that don’t allow nil values." - Apple

Brandon 26.10.2018 05:20

@paddy Да, я понимаю. Спасибо.

JackySong 26.10.2018 07:54

@ Брэндон, я понимаю. Спасибо.

JackySong 26.10.2018 07:54
0
7
180
1

Ответы 1

ноль

Литеральное нулевое значение для объектов Objective-C это означает указатель объекта Objective-C, который указывает на 0x0 все указатели объекта C начинаются с nil.

NSNull

Одноэлементный объект, используемый для представления нулевого объекта。 Это оболочка для нулевого объекта, поэтому вы можете поместить его в коллекцию, такую ​​как NSArray / NSDictionary

NSArray * a1 = @[[NSNull null]]; //Good
NSArray * a2 = @[nil]; // Crash

Подробнее

Что ж, содержание ссылки очень подробное, и теперь это дает мне понять, спасибо.

JackySong 26.10.2018 07:52

Другие вопросы по теме