Tôi đã sử dụng -performSelectorInBackground
trong nhiều ứng dụng của mình, loại không biết đến -detachNewThreadSelector
. Bây giờ tôi tự hỏi những gì khác biệt giữa hai người. Họ có khá nhiều hoán đổi cho nhau, hoặc có sự khác biệt và những nơi mà người ta vượt trội hơn người kia không? Cảm ơn!Sự khác biệt giữa [NSThread detachNewThreadSelector:] và -performSelectorInBackground
Trả lời
Chúng giống nhau. Xem documentation.
performSelectorInBackground: withObject: Hiệu quả của việc gọi phương pháp này cũng giống như nếu bạn gọi là detachNewThreadSelector: toTarget: withObject: phương pháp NSThread với đối tượng, chọn, và đối tượng tham số hiện nay như tham số.
Như Michael nói, chúng giống hệt nhau. Tôi nghĩ rằng, để sử dụng một chuỗi bởi performSelectorInBackground: withObject: là cách dễ dàng hơn là NSThread.
Tuy nhiên, NSThread có thể kiểm soát ưu tiên, xếp chồng, v.v. Nếu bạn muốn tùy chỉnh hành vi, tôi khuyên bạn nên NSThread thay vì performSelectorInBackground: withObject:.
Thú vị các bạn không thể chỉ ra bất kỳ sự khác biệt giữa họ-
tôi sẽ cho bạn biết nhiều này. Chúng tôi có một ứng dụng iPhone đã bị khóa trong khi chúng tôi hiển thị biểu tượng tiết lộ "hoạt động internet" ở thanh trên cùng và cửa sổ cho biết "Đang gửi ..." trong khi chúng tôi gửi tệp âm thanh tới máy chủ và performSelectorInBackground:
đã không làm việc. Khi chúng ta hoán đổi performSelectorInBackground
với detachNewThreadSelector
, nó hoạt động tốt nhưng bây giờ nó phàn nàn rằng không có autoreleased
đối tượng đang chạy trong chủ đề đó có thể được giải phóng bên hồ bơi .. có thể điều này là do hồ bơi nằm trong chủ đề chính?
tôi nghĩ rằng bạn nên có một hồ bơi autorelease cho mỗi chủ đề. –
Corey, nếu bạn đang chạy trên một chủ đề mới và bạn đang sử dụng [đối tượng autorelease], bạn sẽ cần phải tạo hồ bơi tự động của riêng bạn. Khá đơn giản để làm:
- (void)uploadDataOnThread
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// do something here...
[pool release];
}
Tôi nghĩ rằng đó là phát hành '[pool drain]' –
và thoát ra hầu như giống nhau: http://stackoverflow.com/a/799257/545726 – aiham
- 1. Sự khác nhau giữa + [NSThread detachNewThreadSelector: toTarget: withObject:] và - [NSObject performSelectorInBackground: withObject:]?
- 2. Sự khác biệt giữa $ (...) và `...`
- 3. Sự khác biệt giữa. và #
- 4. Sự khác biệt giữa $ * và $ @
- 5. Sự khác biệt giữa ". +" Và ". +?"
- 6. Sự khác biệt giữa "**/* /" và "** /"?
- 7. Sự khác biệt giữa = và: =
- 8. Sự khác nhau cơ bản giữa NSTimer, NSTask, NSThread và NSRunloop là gì?
- 9. Sự khác biệt về sự khác biệt giữa Matplotlib giữa Agg và Cairo
- 10. Sự khác biệt giữa Html.RenderAction và Html.Action
- 11. Sự khác biệt giữa cookie và phiên?
- 12. Sự khác biệt giữa '.' và "." trong java
- 13. Sự khác biệt giữa SimpleDB và S3
- 14. C++ - Sự khác biệt giữa (*). và ->?
- 15. Sự khác biệt giữa offsetHeight và clientHeight
- 16. Sự khác biệt giữa RDLC và SSRS
- 17. Sự khác biệt giữa "\ n" và Environment.NewLine
- 18. Sự khác biệt giữa qt và PyQt4
- 19. Sự khác biệt giữa AForge và OpenCV
- 20. Sự khác biệt giữa toFixed() và toPrecision()?
- 21. sự khác biệt giữa cacao và cocoatouch
- 22. Sự khác biệt giữa smtpClient.send() và smtpClient.SendAsync()?
- 23. Sự khác biệt giữa window.location.host và window.location.hostname
- 24. Sự khác biệt giữa DTLS và TLS
- 25. Sự khác biệt giữa Mealy và Moore
- 26. sự khác biệt giữa createRfcommSocketToServiceRecord và createRfcommSocket
- 27. Sự khác biệt giữa Arrays.sort() và Arrays.parallelSort()
- 28. sự khác biệt giữa orm và pdo
- 29. Sự khác biệt giữa nproc và ulimit?
- 30. Sự khác biệt giữa apc_add và apc_store?
Điều đó làm cho ý nghĩa, vì performSelectorInBackground: withObject: được liệt kê dưới NSObject (NSThreadPerformAdditions) loại ... vì vậy tôi đặt cược nó theo nghĩa đen chỉ là một lời kêu gọi detachNewThreadSelector: toTarget: withObject: P – Sahil
Hãy bỏ qua bình luận cuối cùng của tôi, tôi đã nói qua phía sau của tôi. – Emmanuel