gì là sự khác biệt giữa:phân bổ NSString và khởi tạo
NSString *string1 = @"This is string 1.";
và
NSString *string2 = [[NSString alloc]initWithString:@"This is string 2.];
Tại sao tôi không phân bổ và khởi tạo chuỗi đầu tiên, nhưng nó vẫn hoạt động? Tôi nghĩ tôi phải phân bổ NSString vì nó là một đối tượng?
Trong Cocoa Touch,
-(IBAction) clicked: (id)sender{
NSString *titleOfButton = [sender titleForState:UIControlStateNormal];
NSString *newLabelText = [[NSString alloc]initWithFormat:@"%@", titleOfButton];
labelsText.text=newLabelText;
[newLabelText release];
}
Tại sao tôi không cấp phát và khởi cho chuỗi titleOfButton? Liệu phương pháp tôi gọi có làm điều đó cho tôi không?
Ngoài ra, tôi đang sử dụng XCode 4, nhưng tôi không thích iOS 5 và như vậy, vì vậy tôi không sử dụng ARC nếu vấn đề đó quan trọng. Xin đừng nói rằng tôi nên, tôi chỉ ở đây để tìm hiểu lý do tại sao điều này là như vậy. Cảm ơn!
bản sao có thể có của [Các đối tượng NSString cần phải được cấp phát và init?] (Http://stackoverflow.com/questions/637022/do-nsstring-objects-need-to-be-alloc-and-init) – Caleb