2013-03-08 40 views
1

說我們是在Objective-C在內存中的地址不同,不知道這意味着什麼

NSDate *now = [NSDate date]; 
    NSLog(@"The new date lives at %p", now); 
    NSLog(@"The new date lives also at %p", &now); 

工作NSLogs會吐出不同的內存地址,即混淆了我。其中一個NSLogs現在告訴我該對象的地址,但哪一個?一個是給出指針的地址,另一個是給出對象的地址?

謝謝

回答

2

你是對的。第一條日誌消息顯示了NSDate對象本身的地址,它應該位於某處(「在堆上」)的動態內存中。第二行是你的指針變量'now'的地址,在這種情況下它是一個局部變量,並且應該在堆棧中。

所以你在棧上有一個局部變量nownow是一個指針,其now變量的值是您的NSDate的內存地址。

0

這是指針和指針指針之間的區別。

+1

不,這是地址和該地址的地址之間的差異。 – 2013-03-08 03:37:49

+0

:),這就是我的意思,讓他以同樣的方式思考。 – junkor 2013-03-08 04:49:06