Hiện tại tôi đang sử dụng NSThread
để lưu hình ảnh trong chuỗi khác.NSThread so với NSOperationQueue so với ??? trên iPhone
[NSThread detachNewThreadSelector:@selector(cacheImage:) toTarget:self withObject:image];
Cách khác:
[self performSelectorInBackground:@selector(cacheImage:) withObject:image];
Cách khác, tôi có thể sử dụng một NSOperationQueue
NSInvocationOperation *invOperation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(cacheImage:) object:image];
NSOperationQueue *opQueue = [[NSOperationQueue alloc] init];
[opQueue addOperation:invOperation];
Có lý do nào để chuyển đổi từ NSThread
? GCD là một lựa chọn thứ 4 khi nó được phát hành cho iPhone, nhưng trừ khi có một hiệu suất đáng kể, tôi muốn gắn bó với các phương thức hoạt động trên hầu hết các nền tảng.
Dựa trên @ lời khuyên Jon-Eric, tôi đi với một giải pháp lớp con NSOperationQueue
/NSOperation
. Nó hoạt động rất tốt. Lớp NSOperation
đủ linh hoạt để bạn có thể sử dụng nó với các lời gọi, khối hoặc lớp con tùy chỉnh, tùy thuộc vào nhu cầu của bạn. Không có vấn đề làm thế nào bạn tạo ra NSOperation
của bạn, bạn chỉ có thể ném nó vào một hàng đợi hoạt động khi bạn đã sẵn sàng để chạy nó. Các hoạt động được thiết kế để hoạt động như một trong hai đối tượng mà bạn đưa vào hàng đợi hoặc bạn có thể chạy chúng như là các phương thức không đồng bộ độc lập, nếu bạn muốn. Vì bạn có thể dễ dàng chạy các phương thức hoạt động tùy chỉnh của mình một cách đồng bộ, việc kiểm tra dễ dàng một cách dễ dàng.
Tôi đã sử dụng kỹ thuật tương tự này trong một số dự án vì tôi đã hỏi câu hỏi này và tôi không thể hạnh phúc hơn với cách giữ mã của tôi và kiểm tra của tôi sạch sẽ, được tổ chức và vui vẻ không đồng bộ.
Một ++++++++++ có phân lớp một lần nữa
Bạn có thể cấu hình từng người trong số họ. Đó sẽ là một cách để tìm hiểu. –
Hiệu suất là từ sai, tôi nghi ngờ tất cả chúng đều giống nhau bên dưới. Tôi đang tìm kiếm một người có kinh nghiệm với hai hoặc nhiều hơn các phương pháp này để cho tôi một số lời khuyên về cách ưa thích và lý do tại sao nó tốt hơn. – kubi