Cuốn sách Tôi hiện đang đọc đã cho tôi viết đoạn mã sau:NSArray và NSString
-(IBAction)displaySomeText:(id)sender {
NSString *cow = @"Milk";
NSString *chicken = @"Egg";
NSString *goat = @"Butter";
NSArray *food = [NSArray arrayWithObjects:cow, chicken, goat, nil];
NSString *string = @"The shopping list is: ";
string = [string stringByAppendingString:[food componentsJoinedByString:@", "]];
[textView insertText:string];
}
Tôi hiểu phần nào cách mảng làm việc nhưng tôi cần giúp đỡ để hiểu đoạn mã sau
string = [string stringByAppendingString:[food componentsJoinedByString:@", "]];
Tôi chưa bao giờ nhìn thấy một trường hợp mà điều này là có thể.
Ông có tôi tạo ra một 'chuỗi' đối tượng, từ lớp NSString
, và sau đó tôi đang làm điều này
string = [string stringByAppendingString:];
Tôi đang bối rối. Tôi chưa bao giờ thấy một ví dụ mà tôi tạo một đối tượng và sau đó thực hiện một phương thức trên cùng một đối tượng và lưu nó trong cùng một đối tượng chính xác.
Ví dụ, tôi biết tôi có thể làm điều này
NSSound *chirp;
chirp = [NSSound soundNamed:@"birdChirp.mp3"];
ở trên có ý nghĩa bởi vì tôi đã sử dụng các đối tượng được tạo ra và thực hiện một phương thức lớp trên nó ..
nhưng tôi luôn cho rằng tương đương không thể có mã sau đây
chirp = [chirp methodNameEtc..];
Tôi hy vọng tôi đã giải thích tốt câu hỏi của mình. Nếu không, tôi luôn có thể xây dựng thêm.
Vâng, cảm ơn. Đây là câu trả lời tốt nhất cho đến nay. Tôi rất vui vì bạn đã thấy qua tất cả những điều đó, lol. Cảm ơn rất nhiều. –
Câu hỏi này có vẻ ngu ngốc nhưng tôi không lập trình nhiều trong ObjC: Vì Strings không thay đổi, điều này không gây ra rò rỉ bộ nhớ vì đối tượng chuỗi ban đầu giờ không có con trỏ đến nó (vì stringByAppendingString trả về một đối tượng chuỗi mới) ? – styfle
Có. Các chuỗi cũ đã được dereferenced như bạn nói. Điều này là okay nếu đối tượng dereferenced là autoreleased hoặc một chuỗi chữ được tạo ra như 'NSString * cow = @" Milk "' nhưng nếu nó là một chuỗi được giữ lại sẽ là một rò rỉ bộ nhớ. Điều thú vị nhất là các câu hỏi rò rỉ bộ nhớ trên trang này dường như là những con trỏ và các đối tượng khó hiểu. – NJones