[英]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.