2011-06-23 39 views

Trả lời

1

Việc sử dụng lại các đối tượng thường là một ý tưởng tồi, thường cố gắng để các đối tượng của bạn tồn tại trong thời gian ngắn nhất có thể. Điều này làm giảm số lượng các trạng thái có thể có của mã của bạn và làm cho lý luận về nó dễ dàng hơn. (“Giá trị này đến từ đâu? Có lẽ nó còn sót lại từ việc sử dụng ví dụ trước đây?” Yuck.) Chỉ phá vỡ quy tắc này khi bạn gặp phải các vấn đề có thể đo lường được.

Để đọc thêm dọc theo dòng suy nghĩ này, bạn có thể duyệt questions tagged “immutable”.

+13

Đây không phải là câu trả lời cho câu hỏi của @ Fernando và là một sự khái quát hóa quá mức. Có nhiều bối cảnh trong đó tái sử dụng đối tượng là một cách tiếp cận tốt hơn so với việc tạo đối tượng mới. –

+1

Tôi nghĩ Christopher đúng. Đó là vì lý do hiệu suất. Ví dụ, chế độ xem bảng sử dụng lại các ô hiện có và Apple đã khuyến khích nó một cách rõ ràng. Ít nhất bạn đã trả lời cho câu hỏi áp phích, "không có cách nào để thay đổi tập tin" như Christopher đã làm. –

+0

Chế độ xem bảng là trường hợp đặc biệt vì nó phải đáp ứng các yêu cầu về hiệu suất cứng (cuộn). Nhưng nhìn chung chi phí hiệu suất của một công trình xây dựng đối tượng mới khá thấp hôm nay và tôi đứng trước tuyên bố rằng đó là ý tưởng tồi để tái sử dụng các đối tượng cho đến khi gặp vấn đề về hiệu suất. – zoul

19

Không có API để chuyển tệp mới sang phiên bản AVAudioPlayer hiện có. Tuy nhiên, việc tạo AVAudioPlayer không tốn kém, vì vậy bạn không nên lo lắng về hiệu suất, miễn là bạn phát hành các trường hợp khi bạn đã hoàn tất với chúng.

Nếu bạn có bộ âm thanh cố định phát trên nhau hoặc có thể phát lặp lại, bạn có thể tạo một bản AVAudioPlayer cho mỗi âm thanh và sử dụng lại các trường hợp đó bằng cách gọi play trên trường hợp thích hợp.

Nếu chỉ có một âm thanh phát cùng một lúc và bạn đang tạo âm thanh mới (ví dụ: với chuyển văn bản thành giọng nói dựa trên đầu vào của người dùng), tôi thường có một trình phát đơn lẻ làm thuộc tính. Khi một âm thanh mới phát, tôi gọi số [player stop], nhả trình phát cũ và tạo bản nhạc mới với tệp âm thanh mới.

+2

Vâng, tôi đã tìm kiếm Google về câu hỏi này bởi vì tôi nghĩ rằng việc tạo nhiều AVAudioPlayer mới sẽ làm giảm hiệu suất hoạt động. Câu trả lời của bạn giải quyết các câu hỏi của tôi cùng một lúc. 1) Không có cách nào để sửa đổi tập tin trong AVAudioPlayer 2) Tạo AVAudioPlayer không đắt. –

+0

đây phải là câu trả lời được chấp nhận. – Herm

+0

Bất kỳ đề xuất nào trong ARC? – piperchester

Các vấn đề liên quan