[英]Understanding Instantiation in Objective-C
我目前正在嘗試通過閱讀書籍和在線教程來學習Objective-C,同時參考Apple文檔,但有些事情只是不要點擊。 我有關於類的問題,我已經使用NSString一段時間了,而沒有過多地關注它的使用方式。
我的印象是,為了讓某人能夠使用Objective-C中某個類的方法,你首先需要實例化它,比如...
ClasssName *varName = [[ClassName alloc]init];
然后你會調用像......這樣的方法
[varName someMethod];
但是看看如何使用NSString我現在有點困惑,例如這里我們通常會如何使用它...
NSString *someString = @"some text here";
[someString stringByAppendingFormat: @"some text = %d", 3];
按照我所讀到的關於類的內容,我們需要做類似以下的事情。
NSString *someString = [[NSString alloc]initWithString: @"some text here"];
[someString stringByAppendingFormat: @"some text = %d", 3];
有人可以解釋為什么有些類在使用其方法之前不需要實例化嗎?
Objective-C知道一些稱為文字的縮寫。 編譯器知道特殊符號。 字符串文字被編譯到二進制文件中並在應用程序的整個生命周期中退出。
對於大多數情況,它的行為類似於在運行時創建的對象。
NSString *string = [[NSString alloc] initWithString:@"My String"];
@"My String"
被用作文字之前, string
也可以指向它。 由於Apple LLVM Compiler 4.0 Objective-C知道更多的文字 。 但與字符串文字相比,這些文字是在運行時通過方便的初始化程序創建的。
注意
[someString stringByAppendingFormat: @"some text = %d", 3];
不會改變someString。 它返回一個新的字符串對象。
NSString *newString = [someString stringByAppendingFormat: @"some text = %d", 3];
@"Text"
語法為您提供了一個自動釋放的字符串,它可以被認為是一種速記。
當你寫作
[[NSString alloc]initWithString: @”some text here”];
你在概念上用@”some text here”
創建一個自動釋放的字符串,然后用initWithString
創建一個保留的新字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.