2014-11-20 18 views
8

tôi sử dụng để làm hàng nhập khẩu toàn cầu (ví dụ: nhập khẩu đó sẽ được hiển thị cho tất cả file nguồn trong dự án Xcode của tôi) của tôi trong tập tin AppName -prefix.pch.Cách thức để nhập tệp toàn cầu thay đổi trong Xcode 6/iOS 8?

Tuy nhiên, hiện tại trong môi trường Xcode 6 (và iOS 8), sau khi tạo dự án mới, tệp này sẽ không tự động được tạo nữa.

Câu hỏi của tôi là cách nhập đúng cách toàn cầu trong Xcode 6? Tôi có thể tạo riêng cho mình AppName -prefix.pch và sử dụng cái này cuối cùng không?

Lưu ý: Khi sử dụngCocoapods, một tập tin gọi Pods- AppName -Bolts-prefix.pch được tạo ra. Nhưng nhập khẩu toàn cầu sẽ không được làm việc với điều này.

+0

Yup, nó không được khuyến khích sử dụng pch từ việc đưa vào mới nhất, vì nó làm tăng thời gian xây dựng, và tạo ra vấn đề, thực hành tốt là nhập các lớp khi cần thiết, nhưng đau đớn nếu bạn có nhiều lớp và muốn nhập toàn cầu , bạn có thể chọn thực hiện thủ công bằng cách tạo tệp 'pch'. – iphonic

Trả lời

19

Apple cuối cùng đã hiểu rằng có sự phụ thuộc toàn cầu là một thực tế rất rất xấu. Lý tưởng nhất là bạn cần ngừng sử dụng các tệp PCH, vì nó làm cho các tệp khác rất lộn xộn và phá vỡ việc sử dụng lại mã.

Dù sao, đây là giải pháp

  1. Thêm tập tin PCH mới cho dự án - New file> Khác> PCH tập tin

  2. Tại dự án 'Xây dựng Settings' tùy chọn - thiết lập giá trị của ' Tiền tố Header 'để tên tập tin PCH của bạn, với tên dự án là tiền tố - tức là cho dự án có tên' TestProject 'và PCH tập tin có tên' MyPrefixHeaderFile ', thêm giá trị' TestProject/MyPrefixHeaderFile.pch 'vào plist.

+0

Tôi sẽ đi với cuối cùng nhập khẩu logger của tôi trong mỗi lớp cho riêng mình, các bạn đã thuyết phục tôi! :) Plus, Apple thường biết những gì họ đang làm khi gây ra một sự thay đổi như vậy, vì vậy tôi đoán vì lợi ích của một công dân tốt, tôi sẽ loại bỏ kế hoạch nhập khẩu toàn cầu của tôi ... Cảm ơn cho làm rõ anyway! :) – nburk

+0

Cảm ơn bạn đã trả lời. Nhưng tôi không hiểu tại sao chúng ta không nên sử dụng nhập khẩu toàn cầu. Bạn có thể giải thích lý do tại sao hoặc đưa ra một số hướng dẫn? – sahara108

+2

@ sahara108 trước hết là giảm tốc độ biên dịch, cũng là một thực tế không tốt vì các lớp không thể chuyển sang dự án khác (vì chúng đang sử dụng các phương thức/macro/hàm toàn cục) – l0gg3r

5

Bạn có thể creTe của riêng bạn, nhưng điểm thực sự là bạn không nên có phụ thuộc toàn cầu, bạn chỉ nên nhập khẩu chỉ những gì được yêu cầu vào mỗi lớp. Thật vậy, trong các tệp .h bạn nên cố gắng sử dụng @class cho mọi thứ và chỉ nhập vào tệp .m của bạn. Cách tiếp cận này làm cho sự phụ thuộc của một lớp rất rõ ràng và làm giảm khả năng của các vòng tròn phụ thuộc, cả hai đều là những điều rất tốt.

+0

Tôi hoàn toàn đồng ý rằng nhập khẩu toàn cầu không phải là thực hành tốt. Tôi chỉ muốn sử dụng nó để đăng nhập để đảm bảo Logger tùy chỉnh của tôi được nhập vào tất cả các lớp của tôi. Có cách nào tốt hơn để giải quyết vấn đề này không? – nburk

+0

@nburk bạn cần phải nhập Logger của bạn ở khắp mọi nơi, hoặc sử dụng thừa kế để làm cho những thứ toàn cầu kết hợp. – l0gg3r

0

Trong tệp .pch của dự án không còn được tạo tự động nhưng nếu bạn muốn tệp .pch của dự án không còn được tạo tự động nhưng nếu bạn muốn, bạn có thể tự tạo tệp .pch. Làm như sau;

Goto->File->New->File->(Under iOS)Other->PCH File->Next 

Sau khi nhập tên cho tập tin và tiết kiệm nó, hãy vào "Build Settings" và thiết lập các giá trị chèn cho "tiêu đề tiền tố" là "YourProjectName/YourPCHFileName.pch". Và nếu "Tiền tố Preompile Prefix" được đặt thành "Không" thì hãy đổi thành "Có". Bây giờ bạn có thể đặt bất kỳ tệp nào bạn muốn nhập trên toàn cầu, nhưng giữ mọi thứ ở đây không phải là một thực hành tốt.

+1

nó sẽ không hoạt động, đọc câu trả lời của tôi trước khi trả lời một số mới – l0gg3r

+0

@ l0gg3r Xin lỗi trong khi tôi đang gõ câu trả lời của bạn mà bạn đã đăng để không thấy của bạn. Và vâng tôi đã kiểm tra trong trường hợp của tôi, bạn đã đúng. Tôi cần phải làm theo bước thứ 2 mà bạn đã cung cấp. Cảm ơn cho đề nghị cũng có. –

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