Chúng dường như thực hiện một nhiệm vụ tương tự hợp lý: khởi chạy một chuỗi mới thực hiện bộ chọn đó một cách nhanh chóng và dễ dàng. Nhưng có sự khác biệt nào không? Có thể liên quan đến quản lý bộ nhớ?Sự khác nhau giữa + [NSThread detachNewThreadSelector: toTarget: withObject:] và - [NSObject performSelectorInBackground: withObject:]?
Trả lời
Cả hai đều giống nhau.
Trong iOS và Mac OS X v10.5 trở lên, tất cả các đối tượng đều có khả năng sinh ra một chuỗi mới và sử dụng nó để thực thi một trong các phương thức của chúng. Phương thức performSelectorInBackground: withObject: tạo ra một luồng tách mới và sử dụng phương thức được chỉ định làm điểm vào cho chuỗi mới. Ví dụ, nếu bạn có một số đối tượng (được đại diện bởi biến myObj) và đối tượng đó có một phương thức được gọi là doSomething mà bạn muốn chạy trong một chuỗi nền, bạn có thể sử dụng mã sau đây để làm điều đó:
[myObj performSelectorInBackground:@selector(doSomething) withObject:nil];
Hiệu quả của việc gọi phương thức này giống như khi bạn gọi phương thức newThreadSelector: toTarget: withObject: của NSThread với đối tượng hiện tại, bộ chọn và đối tượng tham số làm tham số. Chủ đề mới được sinh ra ngay lập tức bằng cách sử dụng cấu hình mặc định và bắt đầu chạy. Bên trong bộ chọn, bạn phải cấu hình chủ đề giống như bất kỳ chuỗi nào. Ví dụ: bạn cần phải thiết lập một nhóm tự động trả lời (nếu bạn không sử dụng bộ sưu tập rác) và định cấu hình vòng lặp chạy của chuỗi nếu bạn dự định sử dụng nó. Để biết thông tin về cách định cấu hình chủ đề mới
Tôi giả sử chúng giống nhau, như - (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg;
được định nghĩa trong NSThread.h trong danh mục NSObject (NSThreadPerformAdditions)
. Đó là không có gì kết luận, nhưng đó là bằng chứng theo hướng đó.
Tôi chỉ làm một thử nghiệm, không ai thiết lập một hồ bơi autorelease cho bạn. –
- 1. Sự khác biệt giữa [NSThread detachNewThreadSelector:] và -performSelectorInBackground
- 2. iPhone: cách sử dụng performSelector: onThread: withObject: waitUntilDone: method?
- 3. iPhone dev - performSelector: withObject: afterDelay hoặc NSTimer?
- 4. đèo struct để performSelector: withObject: afterDelay:
- 5. Chặn phiên bản performSelectorOnMainThread: withObject: waitUntilDone:
- 6. IOS - performSelector: withObject: afterDelay: KHÔNG LÀM VIỆC
- 7. performSelector: withObject: afterDelay: không hoạt động từ scrollViewDidZoom
- 8. Sự khác nhau cơ bản giữa NSTimer, NSTask, NSThread và NSRunloop là gì?
- 9. performSelector: withObject: và hành vi lưu giữ của nó
- 10. Sự khác biệt giữa đối tượng và NSObject
- 11. UIButton khai thác nhận [SecondPage performSelector: withObject: withObject:]: tin nhắn được gửi đến phiên bản được phân phối
- 12. Làm thế nào để -performSelector: withObject: afterDelay: hoạt động?
- 13. Tại sao sử dụng performSelector: withObject: withObject tại thời gian chạy nếu bạn biết cả bộ chọn và đối số của nó tại thời gian biên dịch?
- 14. Sự khác nhau giữa .Equals và ==
- 15. Sự khác nhau giữa% w và% W
- 16. Sự khác nhau giữa ParameterInfo.DefaultValue và ParameterInfo.RawDefaultValue
- 17. Sự khác nhau giữa MBean và MXBean
- 18. Sự khác nhau giữa ConfigurationManager và ConfigurationSettings
- 19. Sự khác nhau giữa Tkinter và Tkinter
- 20. Sự khác nhau giữa! = Và =! trong Java?
- 21. Sự khác nhau giữa 'SpecialFolder.LocalApplicationData' và 'SpecialFolder.ApplicationData'?
- 22. Sự khác nhau giữa String.getBytes() và IOUtils.toByteArray()?
- 23. Sự khác nhau giữa presentModalViewController và presentViewController?
- 24. Sự khác nhau giữa NSInvocationOperation và NSBlockOperation
- 25. Sự khác nhau giữa TVar và TMVar
- 26. Sự khác nhau giữa onClickListener và onItemClickListener
- 27. Sự khác nhau giữa `require` và` gem`
- 28. Sự khác nhau giữa HttpUtility.HtmlEncode và Server.HtmlEncode
- 29. Sự khác nhau giữa sqlplus và sqldeveloper?
- 30. Sự khác nhau giữa JPA và JPA2
Câu hỏi hay. Tôi sẽ nói rằng 'perfomSelectorInBackground' có thể tái sử dụng một luồng từ một nhóm (thông qua' libdispatch'), nhưng các tài liệu nói rõ ràng rằng nó sẽ tạo một luồng mới. Vì vậy, yeah, nó dường như làm chính xác những điều tương tự như phương pháp 'NSThread' ... –