Vì bạn đang sử dụng vòng lặp, hãy cẩn thận với cả hai giải pháp của Tom và Benjie. Mỗi người tạo một đối tượng tự động thêm cho mỗi lần lặp. Đối với một vòng lặp nhỏ, đó là tốt, nhưng nếu kích thước của vòng lặp là unbounded hoặc nếu các chuỗi lớn, điều này có thể dẫn đến một bộ nhớ rất lớn tăng đột biến và hiệu suất hit. Đặc biệt trên iPhone, đây chính là loại vòng lặp có thể dẫn đến các vấn đề về bộ nhớ đáng ngạc nhiên do các xung đột bộ nhớ ngắn ngủi.
Giải pháp sau có dung lượng bộ nhớ nhỏ hơn (nó cũng nhanh hơn một chút và mất ít lần nhập hơn). Lưu ý cuộc gọi đến -appendFormat:
thay vì -appendString
. Điều này tránh tạo chuỗi thứ hai sẽ bị vứt bỏ. Hãy nhớ rằng chuỗi cuối cùng có thêm khoảng trống ở cuối mà bạn có thể muốn loại bỏ. Bạn có thể sửa lỗi đó bằng cách xử lý lần lặp đầu tiên hoặc cuối cùng khác nhau hoặc bằng cách cắt không gian cuối cùng sau vòng lặp.
NSMutableString* theString = [NSMutableString string];
for (int i=0; i<=10;i++){
[theString appendFormat:@"%i ",i];
}
label.text = theString;
Đừng quên [NSArray componentsJoinedByString:]
. Trong trường hợp này bạn không có NSArray, nhưng trong các trường hợp phổ biến nơi bạn làm, đây có lẽ là cách tốt nhất để có được những gì bạn đang tìm kiếm.
Nguồn
2009-07-21 14:00:18
Một chút trễ nhưng bạn khởi tạo mảng với kích thước 2 để chỉ mục cao nhất sẽ là 1, nhưng bạn đang thực hiện [2] = 3; mà sẽ gây ra lỗi giới hạn. – Jonny