2012-12-01 60 views
2

比方說,我有這樣的代碼:返回指向不同對象的指針的方法是否自動分配並初始化其他對象?

NSString *inspDate = @"20120515"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyyMMdd"]; 
NSDate *inspectionDate; 
inspectionDate = [dateFormatter dateFromString:inspDate]; 

當我檢查,看看它的工作原理(NSDate包含格式正確的數據),它......但是爲什麼呢?

在這裏,我經過的步驟:

  1. 內存爲NSDateFormatter是越來越分配和堆實例化。 dateFormatter指向該位置,得到它:

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    
  2. 現在dateFormatter被告知如何解釋NSString的一個日期,OK:

    [dateFormatter setDateFormat:@"yyyyMMdd"]; 
    
  3. 這裏是我朦朧的一部分在,inspectionDate指針設置爲零。它不指向任何東西:

    NSDate *inspectionDate; 
    
  4. 如何dateFormatter返回一個指向NSDate在沒有allocinitinspectionDate?執行dateFromString執行allocinit的執行情況嗎?

    inspectionDate = [dateFormatter dateFromString:inspDate]; 
    

幫助我想像這將是一個巨大的幫助。謝謝!

回答

2

dateFromString方法實例(可能通過在某一時刻的分配/初始化呼叫,或NSDate便捷方法本身將執行分配)的NSDate對象,將其分配給您的inspectionDate變量。與不以alloc,newcopy開始的任何「便利」方法一樣,沒有對象所有權的轉移,即返回的實例是自動釋放的。

+1

...並自動釋放返回的日期。 – jrturton

+0

@jrturton更新了答案以明確說明。 –

+0

'dateFromString'負責爲我分配和初始化'NSDate'對象,我只是使用我的'inspectionDate'指針指向其生成的堆。謝謝你,先生! – kevmalek

相關問題