Xcode: Mục tiêu và sơ đồ trong ngôn ngữ đơn giản là gì?


204

Vâng, tiêu đề nói lên điều đó :-) Ý nghĩa của chúng trong tiếng Anh là gì? Tôi thực sự không hiểu lời giải thích trên trang web của Apple và tôi cần đổi tên mục tiêu của mình và tôi sợ rằng không có gì hoạt động sau đó ..



Câu trả lời:


309

Tôi cũng đã thêm vào Workspace và Project!

  • Không gian làm việc - Chứa một hoặc nhiều dự án . Những dự án này thường liên quan đến nhau
  • Dự án - Chứa mã và tài nguyên, v.v. (Bạn sẽ quen với những thứ này!)
  • Mục tiêu - Mỗi dự án có một hoặc nhiều mục tiêu.
    • Mỗi mục tiêu xác định một danh sách các cài đặt xây dựng cho dự án đó
    • Mỗi mục tiêu cũng xác định một danh sách các lớp, tài nguyên, tập lệnh tùy chỉnh, v.v. để bao gồm / sử dụng khi xây dựng.
    • Các mục tiêu thường được sử dụng cho các bản phân phối khác nhau của cùng một dự án.
      • Ví dụ: dự án của tôi có hai mục tiêu, bản dựng "bình thường" và bản dựng "văn phòng" có các tính năng kiểm tra bổ sung và có thể chứa một số bản nhạc nền và nút để thay đổi bản nhạc (như hiện tại).
      • Bạn sẽ được sử dụng để thêm các lớp và tài nguyên vào mục tiêu mặc định của bạn khi bạn thêm chúng.
      • Bạn có thể chọn và chọn các lớp / tài nguyên được thêm vào mục tiêu nào.
        • Trong ví dụ của tôi, tôi có một lớp "DebugHandler" được thêm vào bản dựng văn phòng của tôi
      • Nếu bạn thêm các bài kiểm tra, điều này cũng thêm một mục tiêu mới.
  • Đề án chương trình định nghĩa một điều gì xảy ra khi bạn nhấn "Build", "Test", "Hồ sơ", vv -
    • Thông thường, mỗi mục tiêu có ít nhất một sơ đồ
    • Bạn có thể tự động tạo các lược đồ cho các mục tiêu của mình bằng cách đi tới Scheme> Manage Scheme và nhấn "Autocreate Scheme Now"

Hãy thử nếu tôi hiểu chính xác ... Tôi đang lập trình một ứng dụng và thực hiện hai mục tiêu. Một trong đó tôi sẽ tải lên cửa hàng ứng dụng và một trong đó tôi đã phát triển phiên bản tiếp theo của cùng một ứng dụng. Và trong các lược đồ tôi thực hiện ví dụ một lược đồ trong cả hai mục tiêu để chạy và một lược đồ để gỡ lỗi? Nhưng tại sao tôi cần các đề án khác nhau cho điều đó? Tôi không hiểu lợi thế của BJ Homer ..
MichiZH 17/12/13

FWIW, tôi không sử dụng các sơ đồ khác nhau để phát hành và gỡ lỗi trừ khi tôi thêm các tính năng gỡ lỗi bổ sung như tôi mô tả trong câu trả lời của mình.
James Webster

2
Tuyệt vời giải thích bro! ! !
Sagar Kalathil

6
ý bạn là gì khi xây dựng văn phòng của bạn có một nút âm nhạc ở phía dưới. Ứng dụng thực tế của bạn có mã bổ sung chỉ được kích hoạt trong bản dựng văn phòng hay là nhạc chạy trên máy mac của bạn. Xin lỗi tôi đang bối rối
3366784 7/07/18

Kiểu này định nghĩa những gì tạo nên mỗi khái niệm, nhưng không phải là mục đích của từng mục. Đối với tôi đó là những gì OP đã hỏi về.
O'Rooney

66

Một mục tiêu là một sản phẩm cuối cùng được tạo ra bằng cách chạy "xây dựng" trong Xcode. Nó có thể là một ứng dụng, hoặc khung hoặc thư viện tĩnh hoặc gói thử nghiệm đơn vị. Dù là gì đi nữa, nó thường tương ứng với một mục duy nhất trong thư mục "sản phẩm được xây dựng".

Một lược đồ đại diện cho một tập hợp các mục tiêu mà bạn làm việc cùng nhau. Nó xác định mục tiêu nào được sử dụng khi bạn chọn các hành động khác nhau trong Xcode (Chạy, Kiểm tra, Hồ sơ, v.v.) Thông thường, bạn sẽ chỉ có một sơ đồ, sử dụng mục tiêu ứng dụng chính cho các hành động Chạy, Lưu trữ và Hồ sơ và mục tiêu thử nghiệm đơn vị cho hành động thử nghiệm. Nếu bạn đang xây dựng hai ứng dụng liên quan, bạn có thể có hai sơ đồ sử dụng cùng một gói thử nghiệm đơn vị nhưng các mục tiêu ứng dụng khác nhau.

Lợi ích chính của các lược đồ (được giới thiệu trong Xcode 4) là chúng cho phép bạn chuyển đổi giữa chạy ứng dụng và kiểm tra đơn vị của bạn mà không cần phải chuyển mục tiêu đã chọn.


61

Tôi là một người trực quan, do đó để giải thích khái niệm tôi sẽ sử dụng sơ đồ.

Khi bạn có nhiều mục tiêu, chúng có thể là một đối một khớp với các hành động Chạy, Kiểm tra, Hồ sơ của Xcode, khái niệm này xác định sơ đồ

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

Một mục tiêu là một phiên bản của bạn dự án , mục tiêu tức là khác nhau đôi chút trong lớp & nguồn lực để sử dụng trong thời gian xây dựng. Một dự án có thể có nhiều cài đặt thời gian được xây dựng cho các yêu cầu phân phối riêng biệt.


7
Sơ đồ này có vẻ sai. Một lược đồ nên được gắn với một mục tiêu cụ thể, tôi không thấy nơi nào trong một lược đồ bạn có thể có nhiều mục tiêu.
Boon

6
@Boon Không, bất cẩnChoosy là chính xác. Trong trình chỉnh sửa lược đồ, nhấp vào mục 'xây dựng' ở bên trái. Trong khu vực bên tay phải, nhấp vào '+' và bạn có thể thêm nhiều mục tiêu hơn vào sơ đồ này. Đánh dấu vào các ô như mong muốn. Các tệp thực thi của các mục tiêu này sau đó có sẵn trong các hành động khác (Chạy, Hồ sơ, v.v.) trong trình đơn thả xuống thực thi.
thỉnh thoảng

Điều này là tốt nhưng nó thiếu phần cấu hình xây dựng của các lược đồ. Tôi nghĩ về lược đồ như một tập hợp các cách hành động (Chạy, Kiểm tra, Hồ sơ) khớp với sự kết hợp của các mục tiêu và cấu hình xây dựng (gỡ lỗi, phát hành, qa, prod, v.v.).
Steve Moser

3

Workspace( .xcworkspace) - là một thùng chứa của nhiều projects. Nó được tạo ra như một bước tiếp theo của cross-project references[Giới thiệu]

  • Workspacechứa tất cả schemestừ bao gồmprojects
  • Workspacexử lý tất cả implicit dependencies[Giới thiệu]

Quan sát:

  • Có thể làm việc với các dự án khác nhau trong cùng một cách an toàn workspacevà không nắm bắtCouldn't load Project.xcodeproj because it is already opened from another project or workspace
  • Cocoapods[Giới thiệu] làm việc vớiworkspacenơi tạo Podsdự án

Project( .xcodeproj) - Nó là một container cho targetsscheme. Nó định nghĩa các tập tin mã, tài nguyên ...

Target- PBXNativeTargetphần. Xác định một bộ cài đặt xây dựng cụ thể tạo:

  • Application target
  • Library and framework targets
  • Test
  • Aggregate[Giới thiệu] . Ví dụ, nó được sử dụng để tạo mộtUniversal frameworkhoặcUmbrella framework

Scheme- một Project'scấu hình cho hành động trong Xcode: chạy , kiểm tra , hồ sơ , phân tíchlưu trữ . Schemacó thể được chia sẻ giúp bạn trong CI, Carthage... và nằm:

<project_path>/<project_name>.xcodeproj/xcshareddata/xcschemes

Dependency- Targetscó thể có dependencies. Phụ thuộc là một liên kết nguồn chống lại. Các phụ thuộc này có thể được liên kết tĩnh hoặc động [Giới thiệu] Có hai loại trong số chúng:

  • Explicit Dependency[Giới thiệu] - Mã nguồn của phụ thuộc được đặt trong cùng một dự án hoặc dự án lồng nhau
  • Implicit Dependency[Giới thiệu] - Mã nguồn / mã đóng của phụ thuộc được đặt trong dự án là một phần của cùng một không gian làm việc.

[Từ vựng]

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.