Tầm quan trọng của nhãn hiệu #pragma là gì? Tại sao chúng ta cần dấu #pragma?


279

Mục đích của các #pragmadấu trong Xcode là gì? Liệu vị trí của họ trong .mcác tập tin có vấn đề? Một số nên #pragmađến trước tất cả những người khác?

  • Họ có phải có mặt không?
  • Điểm mới có thể được thêm vào? Tại sao họ lại như vậy? Điều gì gây ra nó?
  • Có bất kỳ tác hại trong việc loại bỏ một dấu hiệu? Có ai muốn không?


Cá nhân tôi không thích họ. Nghiêm túc mà nói, bạn muốn nghĩ về nơi bạn phải đặt một phương pháp mọi lúc? Có nhiều thứ quan trọng hơn để giữ ngăn nắp, như chú ý đến Nguyên tắc Trách nhiệm duy nhất
Brad Thomas

2
Đối với ngôn ngữ nhanh chóng, dấu #Pragma sẽ không hoạt động. Sử dụng # Dan hoặc #FIXME hoặc #TODO kiểm tra liên kết này để biết thêm thông tin stackoverflow.com/a/33040068/1753005
Jayprakash Dubey

Câu trả lời:


315

#pragma markcác lệnh hiển thị trong Xcode trong các menu để truy cập trực tiếp vào các phương thức. Họ không có tác động đến chương trình nào cả.

Ví dụ: sử dụng nó với Xcode 4 sẽ khiến những vật phẩm đó xuất hiện trực tiếp trong Jump Bar.

Có một điều đặc biệt pragma mark -tạo ra một dòng.

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


Đánh giá cao câu trả lời - bạn có thể đăng câu trả lời cập nhật cho biết dấu hiệu pragma trông như thế nào (trong menu đó hoặc bất cứ nơi nào hiện tại) trong XCode mới không?
dùng7804781

Có tương đương Python không?
Edward Falk

@EdwardFalk Đó là IDE cụ thể, vì vậy nó thực sự phụ thuộc vào IDE / trình soạn thảo văn bản của bạn
Michael Ozeryansky

Trình biên dịch GCC của tôi đã đưa ra cảnh báo, foo.h: 52: 0: cảnh báo: bỏ qua dấu #pragma [-Wunknown-pragmas] #pragma mark -, không gây tử vong. Vì vậy, gcc có thể không biết về '-'.
Kemin Zhou

55

#pragma markđược sử dụng để gắn thẻ nhóm phương thức để bạn có thể dễ dàng tìm và phát hiện các phương thức từ Jump Bar. Nó có thể giúp bạn khi các tệp mã của bạn đạt khoảng 1000 dòng và bạn muốn tìm nhanh các phương thức thông qua danh mục từ hộp Jump.

Trong một chương trình dài, việc nhớ và tìm tên phương thức trở nên khó khăn. Vì vậy, dấu pragma cho phép bạn phân loại các phương pháp theo công việc họ làm. Ví dụ: bạn đã gắn thẻ một số thẻ cho Phương thức giao thức xem bảng, Phương thức AlertView, Phương thức ban đầu, Tuyên bố, v.v.

#pragma marklà phương tiện cho XCode nhưng nó không ảnh hưởng đến mã của bạn. Nó chỉ giúp làm cho nó dễ dàng hơn để tìm các phương thức trong khi mã hóa.


21

Nói một cách đơn giản, chúng ta có thể nói rằng nó #pragma mark -được sử dụng để phân loại các phương thức, vì vậy bạn có thể tìm thấy các phương thức của mình một cách dễ dàng. Nó rất hữu ích cho các dự án dài.


13

Chỉ cần thêm thông tin mà tôi đang tìm kiếm: pragma marklà đặc trưng của Xcode, vì vậy nếu bạn xử lý một dự án C ++ mà bạn mở trong các IDE khác nhau, thì nó không có tác dụng gì ở đó. Ví dụ, trong Qt Creator, nó không thêm các danh mục cho các phương thức, cũng không tạo ra bất kỳ cảnh báo / lỗi nào.

BIÊN TẬP

#pragmalà một chỉ thị tiền xử lý xuất phát từ ngôn ngữ lập trình C. Mục đích của nó là chỉ định thông tin phụ thuộc vào việc thực hiện cho trình biên dịch - nghĩa là, mỗi trình biên dịch có thể chọn giải thích lệnh này theo ý muốn. Điều đó nói rằng, nó được coi là một phần mở rộng không thay đổi / ảnh hưởng đến chính mã. Vì vậy, trình biên dịch cũng có thể bỏ qua nó.

Xcode là một IDE tận dụng #pragmavà sử dụng nó theo cách riêng của nó. Vấn đề là, #pragmakhông phải là Xcode và thậm chí là Objective-C cụ thể.


11

Khi chúng ta có một lớp lớn / dài nói hơn vài dòng mã, chúng ta không thể thấy mọi thứ trên màn hình Màn hình, do đó chúng ta không thể thấy tổng quan (còn gọi là các mục tài liệu) của lớp chúng ta. Đôi khi chúng tôi muốn xem tổng quan về lớp học của chúng tôi; tất cả các phương thức, hằng số, thuộc tính của nó trong nháy mắt. Bạn có thể nhấn Ctrl + 6 trong XCode để xem tổng quan về lớp của bạn. Bạn sẽ nhận được một loại cửa sổ bật lên hay còn gọi là Jump Bar.

Theo mặc định, thanh nhảy này không có bất kỳ xô / phần nào. Nó chỉ là một danh sách dài. (Mặc dù chúng ta chỉ có thể bắt đầu nhập khi jump Bar xuất hiện và nó sẽ tìm kiếm trong số các mục của thanh nhảy). Đây là nhu cầu củapragma mark

Nếu bạn muốn tạo các phần trong Jump Bar thì bạn có thể sử dụng dấu pragma với mô tả có liên quan. Bây giờ tham khảo ảnh chụp đính kèm trong câu hỏi. Có 'Xem vòng đời' và 'Một phần dành riêng ..' là các phần được tạo bởi pragma marks


10

Trong khi tìm kiếm doc để chỉ ra cách pragma là chỉ thị cho trình biên dịch, tôi đã tìm thấy bài viết NSHipster này thực hiện công việc khá tốt.

Tôi hy vọng bạn sẽ thích đọc


7
#pragma mark - NSSecureCoding

Mục đích chính của "pragma" là để tham khảo cho nhà phát triển.nhập mô tả hình ảnh ở đây

Bạn có thể dễ dàng tìm thấy một phương thức / Hàm trong hàng ngàn dòng mã.

Xcode 11+:

Dòng đánh dấu trong đầu

// MARK: - Properties

Điểm đánh dấu ở trên và dưới

// MARK: - Properties - 

Dòng đánh dấu chỉ ở dưới cùng

// MARK: Properties -

Vì vậy, tôi có thể loại bỏ các dòng? nó lãng phí không gian cho bộ não của tôi.

1
Xóa # pragma-mark sẽ không ảnh hưởng đến bất kỳ chức năng nào của mã của bạn, nhưng mã của bạn có thể mất khả năng đọc. Nếu bạn thực sự không muốn, bạn có thể loại bỏ nó.
Jeba Moses
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.