Sân chơi Xcode bị kẹt trên 'Sân chơi đang chạy' hoặc 'Khởi chạy trình giả lập' và sẽ không chạy mã, phải làm sao?


144

Mỗi lần tôi tạo một sân chơi mới để kiểm tra một số mã, Xcode bị kẹt và sẽ không chạy mã. Nó chỉ đơn giản là trình bày câu lệnh 'Sân chơi đang chạy' hoặc 'Khởi chạy trình giả lập' ở đầu màn hình với biểu tượng tải hứa hẹn quay bên cạnh nhưng không có gì xảy ra. Đôi khi điều này tiếp tục vô thời hạn và đôi khi Xcode tạm dừng và in nó ra bàn điều khiển:

Playground execution failed: error: Couldn't lookup symbols:
__swift_FORCE_LOAD_$_swiftCoreImage 
__swift_FORCE_LOAD_$_swiftFoundation 
_playground_log_hidden 
_playground_logger_initialize 
_playground_log_postprint 

thread #1: tid = 0xc0cd0, 0x000000010ea7c3c0 MyPlayground`executePlayground, queue = 'com.apple.main-thread', stop reason = breakpoint 1.2

frame #0: 0x000000010ea7c3c0 MyPlayground`executePlayground
frame #1: 0x000000010ea7b9c0 MyPlayground`__37-[XCPAppDelegate enqueueRunLoopBlock]_block_invoke + 32 
frame #2: 0x000000010f59625c CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
frame #3: 0x000000010f57b304 CoreFoundation`__CFRunLoopDoBlocks + 356
frame #4: 0x000000010f57aa75 CoreFoundation`__CFRunLoopRun + 901
frame #5: 0x000000010f57a494 CoreFoundation`CFRunLoopRunSpecific + 420
frame #6: 0x0000000114985a6f GraphicsServices`GSEventRunModal + 161
frame #7: 0x0000000110124f34 UIKit`UIApplicationMain + 159
frame #8: 0x000000010ea7b6e9 MyPlayground`main + 201
frame #9: 0x0000000112ad268d libdyld.dylib`start + 1
frame #10: 0x0000000112ad268d libdyld.dylib`start + 1

Tôi đang chạy Xcode 8.0 (8A218a) trên macOS Sierra 10.12.

Phần cứng :
MacBook Pro (13 "Giữa năm 2012)
2,5 GHz Intel Core i5
4 GB 1600 MHz Ram DDR3

Tôi đã xem xét xung quanh nhưng ít nhất cả hai chủ đề này đều không cung cấp câu trả lời:
https://forums.developer.apple.com/thread/5902
https://github.com/jas/playground/issues/9

Những điều tôi đã thử với thành công bằng không:

  • Khởi động lại Xcode
  • Cài đặt lại Xcode (đã hạ cấp xuống 7.3 nhưng vì điều đó không giúp tôi nâng cấp trở lại 8.0)
  • Khởi động lại máy
  • Tạo sân chơi mới

Bạn có bất cứ ý tưởng về cách giải quyết vấn đề này? Tôi chưa quen với lập trình và háo hức cố gắng học Swift nhưng Xcode đang khiến nó thực tế không thể ...

Cảm ơn bạn trước, chúc mừng.


Cảm ơn bạn vì hồi ứng nhanh chóng. Tôi đang sử dụng sân chơi đơn giản vì tôi thực sự có đăng ký hoạt động tại Treehouse.com và họ khuyến khích sử dụng sân chơi khi thử nghiệm các khái niệm mới.
Emil Osvald

1
Tôi hiểu, nhưng suy nghĩ của tôi là, bạn "háo hức cố gắng học Swift" và ngay bây giờ bạn đang bị mắc kẹt. Nếu bạn có thể tạo một dự án ứng dụng mới và chạy nó, bạn có thể tiến hành. Bây giờ, nếu bạn cũng không thể chạy một dự án ứng dụng, thì bạn có vấn đề sâu hơn. :)
matt

Điều đó chắc chắn là đúng. Cảm ơn bạn đã nhập liệu, tôi sẽ làm như bạn đề xuất miễn là không có giải pháp nào tốt hơn. Tuy nhiên tôi vẫn sẽ giữ chủ đề này hoạt động trong trường hợp ai đó đã tìm ra giải pháp.
Emil Osvald

2
Tôi không có lời khuyên nào để đưa ra ở đây, @EmilOsvald. Tôi cũng có thể báo cáo điều này xảy ra thường xuyên trên MacBook của mình (và cũng xảy ra mọi lúc khi tôi sử dụng iMac, tất cả các máy mới với các bản cập nhật mới nhất). Bạn không nên cảm thấy có lỗi khi muốn sử dụng Playgrounds. Về lý thuyết, chúng là một sản phẩm tuyệt vời và khi chúng hoạt động.
Ilias Karim

1
Không nên có khoảng trắng trước bình luận đầu tiên (nếu dòng văn bản đầu tiên là một bình luận), cũng không có dòng nào trống như dòng đầu tiên. Cho tôi biết.
Daniel Springer

Câu trả lời:


190

Ans. Chuyển sang nền tảng macOS

Khi bạn tạo Sân chơi, theo mặc định, nó chọn nền tảng iOS và tự động nhập UIKit. Đó là UIKit bị treo và bị kẹt mọi lúc . Nếu mã (thực hành) của bạn không sử dụng UIKit thì bạn có thể chuyển sang nền tảng MacOS . Vì sự khác biệt chính (không chính xác) giữa iOS và macOS là ở APPKit và UIKit.

Ở góc trên bên phải của Sân chơi Xcode của bạn, nhấp vào hiển thị / ẩn Tiện ích -> trình kiểm tra tệp -> Cài đặt sân chơi -> Nền tảng -> macOS

Xem ảnh chụp màn hình bên dưới: nhập mô tả hình ảnh ở đây


4
Điều này dường như làm việc với tôi cùng với việc đặt nút thực hiện sân chơi thành thủ công. Họ có bao giờ sửa cái này không, nó có vẻ hơi rác
hoboBob

2
Cảm ơn nó hoạt động tốt khi sử dụng Foundation, chính xác những gì tôi cần. Tôi không thể tin rằng Sân chơi có quá nhiều lỗi ...
Adrien Yvon

15
Nực cười. 3 dòng mã (không có dòng nào nhập UIKit) và tôi phải google cái này. Rất nhiều người sẽ bỏ cuộc và tuyên bố Swift vô dụng.
James Bedford

4
Điều này không làm việc cho tôi. Tôi đang sử dụng Xcode 9.4.1 (không phải bản beta) và tôi phải liên tục khởi động lại Xcode. Khá khập khiễng ...
Michael Rogers

1
Ngoài ra, nếu sân chơi đủ lớn, Cmd + Shift + Enter sẽ ngừng hoạt động. Ai đã lập trình cái thứ tào lao này? Trẻ em sử dụng Playgrounds trên iPad?
Robo Robok

70

Tôi đã thử những điều sau đây và nó đã làm việc cho tôi:

  1. nhấn vào nút "dừng sân chơi" phía dưới
  2. xóa dòng nhận xét đầu tiên và làm cho câu lệnh nhập khẩu thành dòng đầu tiên. không có không gian trên nhập khẩu.
  3. nhấn nút thực hiện

1
Tôi thấy rằng không có chỗ trống nên có mặt trước một bình luận - nhưng bạn có thể có một bình luận là dòng đầu tiên. Chỉ không có dòng trống trước nó, cũng không thụt vào trước nó, trên dòng của nó.
Daniel Springer

3
Tôi sẽ thêm vào đó là cần phải khởi động lại Xcode. Nó dường như làm việc cho tôi.
jeb_is_a_mess

26
Đã làm cho tôi. Tôi không thể tin được lỗi này là vô lý như thế nào. Apple nên xấu hổ.
gangelo

1
khởi động lại xcode là điều duy nhất hiệu quả với tôi
George Filippakos

1
Tuyệt vời. Tôi đã thử bỏ xcode, xóa dữ liệu dẫn xuất, v.v. nhưng không có gì hiệu quả ngoại trừ việc này. Mặc dù tôi đã nhập hàng ở dòng đầu tiên!
Shivam Pokhriyal

58

Trong trường hợp của tôi, Xcode 8.3.2, nó hoạt động khi tôi thử các bước dưới đây:

  1. Tệp -> Đóng "Name.playground"
  2. Tệp -> Đóng Sân chơi
  3. Thoát Xcode
  4. Mở lại Xcode

2
Cung cấp một cái gì đó ngoài tôi, có ai sử dụng XCode hiện đại có cái nhìn sâu sắc về nguyên nhân gốc rễ của sự thất bại này không? Điều này hóa ra là công việc không xâm lấn tốt nhất, tuy nhiên, tôi sẽ không coi bất cứ điều gì thiếu giải quyết vấn đề là một giải pháp. Các bình luận trong tiêu đề sân chơi có thực sự có phần nào trong vấn đề không? Và Apple nói gì về nguyên nhân?
truedat101

Điều này làm việc cho tôi cùng với việc xóa dòng trống trước câu lệnh in của tôi.
TheStix

2
Thật tệ, thật là một cách ngu ngốc để giải quyết vấn đề IDE.
PruitIgoe

Đồng ý, điều này là siêu khập khiễng.
Ilias Karim

51

Quá trình chính của Buggy Simulator vẫn hoạt động ngay cả sau khi đóng Xcode. Vì vậy, đây là các bước:

  1. Thoát Xcode;
  2. Giết com.apple.CoreSimulator.CoreSimulatorServicequá trình trong Activity Monitor;
  3. Khởi chạy Xcode và chạy Sân chơi của bạn.

1
Tôi thích câu trả lời này hơn các câu trả lời khác bởi vì nó đi sâu vào trọng tâm của vấn đề
craft

1
Tôi có cần phải làm điều này mỗi lần?
Vaibhav Saran

20

Theo kinh nghiệm của tôi, bạn nên:

  1. Ngăn chặn làm mới sân chơi Swift, bằng cách giữ: mũi tên ► ở phần dưới bên trái của Sân chơi và chọn "Chạy thủ công"
  2. Thoát Xcode
  3. Khởi động lại Xcode

Nó hoạt động rất tốt.


4
Nhưng không phải toàn bộ Điểm của Sân chơi để chạy mã của bạn như đã viết?
saphryn

16

Tôi đã hủy bình luận trên dòng đầu tiên. Nó giải quyết cho tôi. Đảm bảo dùng thử sau khi bạn đã đóng và khởi chạy lại Xcode và buộc thoát com.apple.coresimulator khỏi Activity Monitor


1
Trên XCode 8.2.1, điều này làm việc cho tôi. Khi tôi xóa bình luận dòng đầu tiên về sân chơi, nó chạy rất nhanh. Tôi đã không buộc phải bỏ trình giả lập.
jessi

Cảm ơn câu trả lời @Fiveagle. Thật vậy, tôi đã buộc phải quy trình coresimulator, loại bỏ các dòng đầu tiên để "nhập UIKit" là dòng đầu tiên. Và khởi động lại XCode đã thực hiện các thủ thuật, nhưng quá trình biên dịch đầu tiên phải mất một thời gian để thực hiện.
yves Baume

13

Thêm nhập PlaygroundSupport đã giải quyết vấn đề cho tôi :)


2
Hấp dẫn. Bạn đã có cái này từ đâu?
Daniel Springer

Nếu nó hiệu quả như bạn nói, bạn sẽ nghĩ rằng các nhà phát triển sẽ có mặc định đó. Tôi sẽ thử nghiệm điều này. Cảm ơn!
saphryn

6

Bạn có thể chuyển sang xử lý thủ công. Nó làm việc cho tôi. ảnh chụp màn hình


3

Hãy chắc chắn rằng bạn giết xcode trong trình giám sát hoạt động trước khi cuối cùng giết com.apple.CoreSimulator.CoreSimulatorService trong trình giám sát hoạt động. Tôi đã thử giết quá trình nhiều lần và tôi nhận ra nếu xcode vẫn đang chạy trong hoạt động nền thì quá trình com.apple.CoreSimulator.CoreSimulatorService sẽ bật lại ngay cả khi bạn vừa giết nó.


2

Tôi gặp vấn đề tương tự, tất cả những gì tôi đã làm là mở trình soạn thảo Trợ giúp và mọi thứ đều hoạt động tốt với tôi ngay cả khi tôi đóng trình chỉnh sửa Trợ giúp! Đừng hỏi tại sao nó là bản dùng thử và lỗi. Hy vọng điều này sẽ giúp bạn


Đó thực sự là một ý tưởng tuyệt vời. Vì nút phát / dừng không kích hoạt quá trình hoặc buộc làm mới, tôi đoán bạn có thể nghĩ đến việc bật và tắt Trình chỉnh sửa trợ lý để thay thế cho nút phát lol. Tuyệt vời :)).
saphryn

0

Sau khi chạy một lúc, bạn sẽ thấy thông báo lỗi, sau đó bạn vào xem> gỡ lỗi khu vực> kích hoạt bảng điều khiển và sau đó chơi lại làm việc cho tôi


1
Một thời gian là gì? 5 phút? Một ngày?
Daniel Springer

từ 5 đến 15 phút có thể, sau vài tuần xảy ra sự cố này, tôi đã đổi sang SSD và nâng cấp lên 16GB Bộ nhớ RAM và giải quyết được, như thay đổi ngày và đêm
CrtlBreak

0

Kiểm tra gói lưu trữ iCloud!

Nếu bạn có một cái, nó sẽ liên tục đồng bộ toàn bộ máy tính bao gồm các thư mục Desktop và Document. Thay vào đó, hãy thử tạo thư mục "Tệp cục bộ" trong thư mục Trang chủ của bạn (lệnh + shift + h) và giữ các dự án Sân chơi của bạn ở đó, nơi nó không đồng bộ hóa với iCloud.

Điều này làm việc cho tôi. Tôi hy vọng điều này cũng làm việc cho bạn! :)


Điều này thực sự làm việc cho tôi. Bất cứ ai khác có vấn đề này thực sự nên thử nó.
Peter Schorn

0

Tôi đang sử dụng Xcode 10.2 và đang gặp vấn đề tương tự. Vì vậy, nói chung chỉ cần sử dụng Sân chơi Swift trực tuyến

Điều này phục vụ mục đích của tôi! :-)


0

Trong trường hợp của tôi, vấn đề là do người dùng gây ra. Tôi đã hiển thị trình chỉnh sửa trợ lý, nhưng chế độ xem trực tiếp không được chọn. Hãy chắc chắn rằng nó trông như thế này:

Xem trực tiếp

Và không như thế này:

nhập mô tả hình ảnh ở đây


0

Cũng xảy ra, như trong trường hợp của tôi, khi bạn đã xác định một hàm, nhưng đã quên gọi nó?


0

Như thể câu hỏi này không có đủ câu trả lời, tôi sẽ cung cấp "giải pháp" cho vấn đề sân chơi Swift bị mắc kẹt:

Một giải pháp tôi đã tìm thấy phù hợp với tôi (vì vậy tôi không phải khởi động lại Xcode):

killall launchd_sim

Điều này sẽ khiến cho "Sân chơi đang chạy ..." biến mất và bạn có thể kích hoạt một thực thi mới. Xin lưu ý: lần thực hiện tiếp theo sẽ quay vòng launchd_simvà tất cả những quá trình con đó lại xử lý. Có lẽ tốt nhất là chỉ giết quá trình con có liên quan. Nhưng tôi đã không tìm thấy nó cho đến nay.

Nhưng tôi chỉ làm điều này khi tôi không sử dụng Bộ mô phỏng iOS song song, vì launchd_simquá trình này là một quá trình con Simulator.


0

Tôi đã xóa dữ liệu dẫn xuất và thư mục xây dựng sạch. Điều này làm việc cho tôi. Tôi đã phải đối mặt với Xcode 11.2.1 và Xcode 10.1 trên cùng một máy.


-1

Tôi đã phải đối mặt với cùng một vấn đề nhưng sau khi googling và thử nghiệm một chút, tôi phát hiện ra rằng người ta phải luôn luôn import UIKittrước khi nhập bất kỳ lib khác.


-1

Đầu tiên, xóa dòng bình luận sẵn có.

Sau đó, ngay cả khi bạn đặt một nhận xét dòng đầu tiên trở lại, nó vẫn hoạt động. nhập mô tả hình ảnh ở đây


-1

Một mẹo cuối cùng phù hợp với tôi: Đảm bảo không có trình giả lập iOS nào đang chạy. Họ mâu thuẫn với nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.