簡體   English   中英

使用alloc和init在Objective-C中初始化實例

[英]initialize an instance in objective-C with alloc and init

我正在學習Objective-C,並且剛剛閱讀了有關alloc和int方法的信息。 在此之前,例如,當我想創建一個NSDate實例時,我編寫了代碼:

NSDate *now = [NSDate date];

現在我看到上面可以這樣寫

NSDate *now = [[NSDate alloc] init]; 

以上是做同樣的事情嗎? 據我所知(希望是正確的),第一個通過將消息日期發送到NSDate類來創建和創建NSDate實例。 第二個,它只是為實例分配空間並對其進行初始化,以便可以使用它。

如果您不熟悉NSDate,基於Objective-C的背景知識,您會認為列出的兩件事絕對不是同一件事。 但實際上,在這種情況下,它們是同一回事。

[NSDate date]調用NSDate類方法,該方法返回設置為當前日期和時間的NSDate對象。

通常,諸如[[NSDate alloc] init]類的方法調用將實例化所請求類型的新默認對象,因此您可能希望不會將其設置為任何日期/時間。 但是,實際上NSDate對象是使用當前日期和時間初始化的, 如文檔中所述 ,因此在這種特殊情況下-它們同一回事。

順便說一句,與大多數NSObjects一樣,您也可以調用[NSDate new]來獲得與[[NSDate alloc] init]相同的效果(因此,在這種情況下與[NSDate date] )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM