2011-09-11 23 views
6

Tôi đã tạo một dự án Pane Xcode Preference mới mà tôi muốn chạy trong ứng dụng Tùy chọn hệ thống. Tôi đã thực hiện một sửa đổi đối với cài đặt xây dựng của dự án:Không thể chạy Ứng dụng ưu tiên ngăn xếp

  1. Đã thay đổi SDK cơ sở thành Mac OS X 10.6 từ 10.7 (Vì tôi muốn giữ khả năng tương thích với Snow Leopard).

Tôi có một tệp nib và lớp con NSPreferencePane, nhưng Xcode không cho phép tôi chạy ứng dụng (chỉ xây dựng nó, tùy chọn Chạy bị tắt).

My số kỹ thuật môi trường:

  • Macbook Pro 2010
  • Mac OS X Lion (10.7)
  • Xcode 4,2

Trả lời

14

Với Đề án Xcode bây giờ bạn có thể làm điều này rất độc đáo. Chỉnh sửa hành động Run của chương trình này như sau:

  • Đặt Executable Hệ thống Preferences.app
  • Đến tab Arguments và vượt qua một đối số khởi động: $USER_LIBRARY_DIR/PreferencePanes/$FULL_PRODUCT_NAME
  • Bây giờ mở rộng chương trình Run/Debug và bấm vào "Pre-hành động"
  • Thêm một kịch bản pre-action với cơ thể sau đây: cp -a "$TARGET_BUILD_DIR/$FULL_PRODUCT_NAME" "$USER_LIBRARY_DIR/PreferencePanes/"

Bingo. Chạy bây giờ sẽ khởi chạy tùy chọn hệ thống và đi trực tiếp vào prefpane của bạn.

Theo mặc định, lược đồ là cho mỗi người dùng và do đó bạn có thể loại trừ chúng khỏi kho lưu trữ của mình và thậm chí nếu không người dùng khác sẽ không nhìn thấy chúng. Chuyển đến "Quản lý lược đồ ..." và đánh dấu lược đồ prefPane là được chia sẻ nếu bạn muốn người khác nhận các cài đặt này.

NB: Vì một lý do nào đó, tôi có vẻ gặp sự cố ngẫu nhiên khi bạn khởi chạy prefPane làm đối số. Chỉ cần tắt đối số và khởi chạy thủ công một lần - từ đó bạn có thể sử dụng đối số một lần nữa ...

+4

Cũng lưu ý rằng vì OS X 10.8 Pref Panes có thể sử dụng ARC thay vì GC. Khi bạn khởi động System Preferences từ Xcode, nó bắt đầu với GC được kích hoạt (trong khi từ menu Apple nó bây giờ dường như bắt đầu với ARC theo mặc định). Nếu bạn muốn sử dụng ARC sau đó để tránh nhảy khởi động lại (sẽ phá vỡ phiên gỡ rối của bạn), hãy thêm một biến môi trường vào Lược đồ OBJC_DSIABLE_GC = YES –

+3

Xin vui lòng không có lỗi chính tả trong biến. Nó phải là "OBJC_DISABLE_GC = YES" – gamma

+1

Điều này hoạt động hoàn hảo sau khi lưu ý vấn đề thu gom rác và biến lỗi chính tả. Cảm ơn! –

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