วัตถุประสงค์ C เช่น C ไม่มีเนมสเปซ ซึ่งหมายความว่าหากใครบางคนได้กำหนดฟังก์ชันfoo
หรือคลาสBar
แล้วมันจะต้องไม่ซ้ำกันทั่วโลกและคุณไม่สามารถกำหนดได้ ซึ่งอาจส่งผลให้เกิดอาการปวดหัวจำนวนมากเมื่อคุณมีรหัสของคุณแล้วเพิ่มห้องสมุดอื่นและทันใดนั้นสิ่งต่าง ๆ ในสถานที่แปลก ๆ
มีเป็นแนวทางที่นำเสนอโดยแอปเปิ้ลในการประชุม: การเขียนโปรแกรมด้วยวัตถุประสงค์ Cห้องสมุดของนักพัฒนา iOS:
ชื่อบางชื่อต้องไม่ซ้ำกันในแอปของคุณ
ทุกครั้งที่คุณสร้างชนิดสัญลักษณ์หรือตัวระบุใหม่คุณควรพิจารณาขอบเขตที่ชื่อนั้นจะต้องไม่ซ้ำกัน บางครั้งขอบเขตนี้อาจเป็นแอปพลิเคชันทั้งหมดรวมถึงกรอบงานที่เชื่อมโยง บางครั้งขอบเขตจะถูก จำกัด เพียงแค่คลาสที่ล้อมรอบหรือแม้แต่บล็อกของรหัส
ชื่อคลาสจะต้องไม่ซ้ำกันในแอพทั้งหมด
คลาส Objective-C ต้องตั้งชื่อไม่ซ้ำกันไม่เฉพาะในรหัสที่คุณกำลังเขียนในโครงการ แต่ยังรวมถึงกรอบหรือบันเดิลใด ๆ ที่คุณอาจรวมถึง ตัวอย่างเช่นคุณควรหลีกเลี่ยงการใช้ชื่อคลาสทั่วไปเช่น ViewController หรือ TextParser เนื่องจากอาจเป็นไปได้ว่าเฟรมเวิร์กที่คุณใส่ในแอพของคุณอาจล้มเหลวในการปฏิบัติตามอนุสัญญาและสร้างคลาสที่มีชื่อเดียวกัน
เพื่อให้ชื่อคลาสไม่ซ้ำกันการประชุมคือการใช้คำนำหน้าในทุกชั้น คุณจะสังเกตเห็นว่าชื่อคลาส Cocoa และ Cocoa Touch เริ่มต้นด้วย NS หรือ UI คำนำหน้าตัวอักษรสองตัวแบบนี้สงวนไว้โดย Apple เพื่อใช้ในคลาสเฟรมเวิร์ก เมื่อคุณเรียนรู้เพิ่มเติมเกี่ยวกับ Cocoa และ Cocoa Touch คุณจะพบกับคำนำหน้าอื่น ๆ ที่เกี่ยวข้องกับเฟรมเวิร์กเฉพาะ:
...
คลาสของคุณเองควรใช้ตัวอักษรนำหน้าสามตัว สิ่งเหล่านี้อาจเกี่ยวข้องกับการรวมชื่อ บริษัท ของคุณและชื่อแอปของคุณหรือแม้แต่ส่วนประกอบเฉพาะภายในแอปของคุณ ตัวอย่างเช่นหาก บริษัท ของคุณถูกเรียกว่า Whispering Oak และคุณกำลังพัฒนาเกมที่ชื่อว่า Zebra Surprise คุณอาจเลือก WZS หรือ WOZ เป็นคำนำหน้าชั้นของคุณ
ดังนั้นห้องสมุดพวกเขาที่คุณพูดถึงการแบ่งอนุสัญญานี้ แต่รับที่หัวใจของปัญหาการขาดการกำหนดชื่อภายในวัตถุประสงค์ C
การอ่าน
Namespacing เพิ่มเติมโดย NSHipster
วิธีที่ดีที่สุดในการแก้ไขการชนของเนมสเปซ Objective-C คืออะไร?
หนึ่งใช้ namespaces ในรหัส iOS วัตถุประสงค์อะไร
;-)