1. 程式人生 > >iOS 面試題(十一)

iOS 面試題(十一)

能理解你的疑問,但是你問的問題不太正確,不存在編譯時的物件這個概念。

首先,宣告 NSString *testObject 是告訴編譯器,testObject是一個指向某個Objective-C物件的指標。因為不管指向的是什麼型別的物件,一個指標所佔的記憶體空間都是固定的,所以這裡宣告成任何型別的物件,最終生成的可執行程式碼都是沒有區別的。這裡限定了NSString只不過是告訴編譯器,請把testObject當做一個NSString來檢查,如果後面呼叫了非NSString的方法,會產生警告。

接著,你建立了一個NSData物件,然後把這個物件所在的記憶體地址儲存在testObject裡。那麼執行時,testObject

指向的記憶體空間就是一個NSData物件。你可以把testObject當做一個NSData物件來用。