2011-02-02 25 views
17

Có REPL cho mục tiêu-C không?REPL cho mục tiêu-C

Tôi đang học Mục tiêu-C và thiếu hoàn toàn một REPL, đến từ nền Python.

Trả lời

9

F-Script cung cấp REPL lấy cảm hứng từ Smalltalk để phát triển ca cao và Nu cung cấp một bản dựa trên Lisp. F-Script có vẻ được đánh bóng hơn một chút và cung cấp một trình duyệt đối tượng.

Cả hai dường như đang nhắm mục tiêu OS X, thay vì phát triển iOS. Có những bài đăng trên blog và diễn đàn rải rác với những người mô tả việc sử dụng Nu để phát triển ứng dụng iOS, nhưng tất cả chúng dường như từ khoảng hai năm trước. Ngoài ra còn có một video YouTube, "Sử dụng một REPL Đề án để gỡ lỗi ứng dụng iPhone thời gian thực" với một screencast của một đồng nghiệp bằng cách sử dụng Đề án để gỡ lỗi một ứng dụng iPhone.

Tôi chưa thử nghiệm với bất kỳ công nghệ nào trong số này, nhưng tôi rất muốn nghe từ bất kỳ ai có.


Tôi vừa nhận ra có một câu trả lời đơn giản hơn cho tất cả điều này. Nếu bạn đến từ Python, và muốn thử nghiệm với Cocoa trong REPL, bạn chỉ nên sử dụng Python REPL. OS X gửi cùng với Python tới Objective-C bridge. Chỉ cần chạy Python, làm và bạn tắt. Ngoài ra còn có cầu nối cho Ruby và Common Lisp, trong số những người khác. Tất nhiên, tất cả các REPL này chỉ cho phép bạn viết mã động để tương tác với Cocoa, nhưng chúng không cho phép bạn viết mã Objective-C thực, và diễn giải nó hoặc biên dịch nó một cách tự động để tương tác với nó. Vì vậy, không ai thực sự đáp ứng yêu cầu ban đầu của bạn.

+0

Python 2.7 bằng cách sử dụng sổ ghi chép jupyter, 'import objc' không thành công . Url apple cho biết trang không tìm thấy. – AnneTheAgile

+0

Điểm tốt. Tại một số thời điểm trong năm năm qua, tôi nghĩ rằng Apple đã giảm hỗ trợ cho cây cầu mục tiêu-C. Tại thời điểm này, cách tốt nhất để tương tác với Cocoa từ REPL là với Swift. Chỉ cần chạy "nhanh". Không có gì tốt cho Objective-C mà tôi biết. – algal

+0

Tôi tìm thấy CoderPad, xem câu trả lời mới của tôi. – AnneTheAgile

4

Khi điểm ngắt được kích hoạt trình gỡ lỗi sẽ mở ra. Khi trong trình gỡ lỗi, bạn có thể nhập bất cứ điều gì bạn muốn vào gdb. Bạn có thể sử dụng p [someObj someMethod] để in những thứ nằm ngoài phạm vi điểm dừng của bạn. gdb là một tiện ích mạnh mẽ được ghi lại toàn bộ trên web.

Điều đó sẽ gần như bạn đạt được những gì tôi nghĩ bạn đang theo dõi. Đây chỉ là một điều phức tạp hơn để làm trong các ngôn ngữ biên dịch, vì không có bất kỳ eval trong Mục tiêu-C.

+2

Bạn không thể khai báo và/hoặc phân bổ các biến mới bên trong trình gỡ rối, phải không? Bạn chỉ có thể kiểm tra/sửa đổi các biến hiện có. – d11wtq

+0

Có, bạn có thể. http://stackoverflow.com/questions/11192511/does-lldb-have-convenience-variablesvar –

+0

Bạn cũng có thể sử dụng lệnh lldb 'expr', cho phép gán, quá –

3

Theo như tôi biết, gần nhất bạn có thể truy cập vào REPL tại thời điểm này thực sự là thông qua các trình gỡ rối (nghĩa là GDB hoặc trình gỡ lỗi LLVM LLDB).

Đối với C thuần túy, có CCons.

Hầu hết mọi thứ trong API mục tiêu-C của Apple (đặc biệt là Foundation) cũng có tương đương C trực tiếp (ví dụ: CFRelease(obj); giống như [obj release];), bạn có thể sử dụng trong CCons.

CCons được xây dựng trên LLVM và Clang, cũng hỗ trợ Objective-C. Có thể mở rộng CCons để hỗ trợ Objective-C.

0

Trong dự án Gambit Objective-C dường như có một nỗ lực để tạo một REPL dựa trên lược đồ.

REPL trong Ruby Motion cũng được cho là tốt cho mục đích thăm dò (mặc dù tôi chưa tự mình thử).

0

'Bản dùng thử' của CoderPad cung cấp REPL tự quay mặt đối diện với hàng tỷ ngôn ngữ bao gồm objc !!! Tôi chỉ sử dụng nó và nó thực sự là một công cụ bán hàng tốt cho họ (tôi không liên kết; họ làm công cụ cho những người phỏng vấn lập trình viên).https://coderpad.io/

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