我很困惑,你能告訴我哪一個更好,爲什麼?哪一個更好分配初始化或新的
我在某處讀到這兩個都用於分配和初始化。有人告訴我,你不能做喜歡newWithString和所有其他類似的東西,但是當我在Xcode試過那麼它沒有給我錯誤
NSString *AddEmail =[[NSString alloc]initWithString:@"Add Email"];
NSString *AddEmail =[NSString new];
做到既會工作在同樣的方式?
預先感謝您
我很困惑,你能告訴我哪一個更好,爲什麼?哪一個更好分配初始化或新的
我在某處讀到這兩個都用於分配和初始化。有人告訴我,你不能做喜歡newWithString和所有其他類似的東西,但是當我在Xcode試過那麼它沒有給我錯誤
NSString *AddEmail =[[NSString alloc]initWithString:@"Add Email"];
NSString *AddEmail =[NSString new];
做到既會工作在同樣的方式?
預先感謝您
[[SomeClass alloc] init]
可以得到同樣的結果[SomeClass new]
。新的實現爲
+ (id) new
{
return [[self alloc] init];
}
您使用的newWithString
方法給出一個比較明確的警告:「類方法+newWithString
沒有發現」,所以即使你的代碼編譯,它會在此行失敗。 (除非您在NSString
上聲明瞭一個類別)。
我傾向於選擇[[alloc] init]
,因爲你可以分配一個對象,然後選擇您將如何初始化它的變量,根據您選擇的init()方法..
是的,我知道了我的xcode有一些問題沒有顯示錯誤,但編譯時錯誤 – 2013-04-25 06:43:01
+[NSString new]
簡單地返回一個空的,不可改變的字符串。
它相當於[[NSString alloc] init]
。
你的例子是不一樣的。如果我正確地猜測你的意圖,NSString * AddEmail = @"Add Email";
將是你需要寫的。在本例中,您不需要使用+alloc
,-initWithString:
,+stringWithString:
等,因爲@"Add Email"
已經是NSString
。
[[TYPE alloc] init]
和[TYPE new]
是等價的(除非被覆蓋)。您選擇的是您的偏好。我更喜歡[TYPE new]
,因爲它更短,並且無論何時創建「新」對象,都不需要分離(或發音)alloc/init消息鏈。
http://stackoverflow.com/questions/3330963/alloc-init-and-new-in-objective-c – 2013-04-25 06:34:33
你從哪裏找到這個方法newWithString:? – Anupdas 2013-04-25 06:34:34
我不知道我只是在我的Xcode累了,沒有錯誤 – 2013-04-25 06:34:57