Почему указатель на пользовательский объект не содержит тот же адрес в памяти, что и сам пользовательский объект - PullRequest
0 голосов
/ 08 октября 2019

Я склоняюсь к блокам В target-c я хотел понять концепцию указателей с точки зрения объективного-c. учитывая приведенный ниже код, я ожидал, что оператор 3 отобразит тот же результат или хотя бы адрес памяти sam. Хотя бы потому, что указатель

meAsImpl refers/points/observs the memory location of the user-defined object MeAsImpl
Hence, the 3 NSLog statement should display the same results

Результат кода следующий:

 <MeAsImpl: 0x600000194120>
<MeAsImpl: 0x60000019f240>
<MeAsImpl: 0x60000019f240>

Пожалуйста, дайте мне знать, почему первое значение отличается от двух последующих значений

код :

    MeAsImpl *meAsImpl = [[MeAsImpl alloc] init];
    NSLog(@"%@", meAsImpl);
    NSLog(@"%@", MeAsImpl.alloc);
    NSLog(@"%@", MeAsImpl.alloc.init);

1 Ответ

1 голос
/ 08 октября 2019

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

Если вы используете alloc два раза, вы получите два адреса памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...