ชั้นเรียนจำนวนมากใน Cocoa / Cocoa Touch มีส่วนนำหน้า NS มันหมายความว่าอะไร?
ชั้นเรียนจำนวนมากใน Cocoa / Cocoa Touch มีส่วนนำหน้า NS มันหมายความว่าอะไร?
คำตอบ:
มันมาจากมรดกNeXTSTEP
รหัสต้นฉบับสำหรับกรอบ Cocoa มาจากมูลนิธิNeXTSTEPไลบรารีและ AppKit (ชื่อเหล่านั้นยังคงใช้โดยกรอบ Cocoa ของ Apple) และวิศวกร NextStep เลือกที่จะนำหน้าสัญลักษณ์ของพวกเขาด้วย NS
เนื่องจาก Objective-C เป็นส่วนเสริมของ C ดังนั้นจึงไม่มีเนมสเปซเหมือนใน C ++ สัญลักษณ์จะต้องนำหน้าด้วยคำนำหน้าที่ไม่ซ้ำกันเพื่อไม่ให้ชนกัน สิ่งนี้มีความสำคัญอย่างยิ่งสำหรับสัญลักษณ์ที่กำหนดในกรอบงาน
หากคุณกำลังเขียนแอปพลิเคชันเช่นว่ารหัสของคุณมีแนวโน้มที่จะใช้สัญลักษณ์ของคุณเท่านั้นคุณไม่ต้องกังวลเกี่ยวกับเรื่องนี้ แต่ถ้าคุณกำลังเขียนเฟรมเวิร์กหรือไลบรารีสำหรับการใช้งานของผู้อื่นคุณควรใส่สัญลักษณ์ของคุณด้วยสัญลักษณ์นำหน้าด้วย CocoaDev มีหน้าเว็บที่นักพัฒนาจำนวนมากในชุมชน Cocoa ได้ระบุคำนำหน้า "เลือก" ไว้ คุณอาจพบว่าการสนทนานี้เป็นประโยชน์
N eXT S TEP หรือN eXTSTEP / Sขึ้นอยู่กับว่าคุณต้องการถามใคร
ซันมีการลงทุนขนาดใหญ่พอสมควรใน OpenStep สักพัก ก่อนที่ดวงอาทิตย์เข้ามาในภาพสิ่งที่มากที่สุดในรากฐานแม้ว่ามันจะไม่ได้เป็นที่รู้จักกันเป็นรากฐานกลับมาแล้วถูกนำNXสำหรับN e X T และบางครั้งก่อนที่ดวงอาทิตย์เข้ามาทุกภาพจะเปลี่ยนเป็นNS Sส่วนใหญ่มีแนวโน้มไม่ได้ยืนสำหรับอาทิตย์แล้ว แต่หลังจากที่ดวงอาทิตย์ก้าวเข้าไปในมติทั่วไปคือการที่มันยืนดวงอาทิตย์เพื่อเป็นเกียรติแก่การมีส่วนร่วมของพวกเขา
ฉันมีการอ้างอิงสำหรับสิ่งนี้ แต่ฉันหามันไม่พบในตอนนี้ ฉันจะอัปเดตโพสต์หาก / เมื่อฉันพบมันอีกครั้ง
มันเป็นมรดกของ NextStep (= NS) NeXT เป็น บริษัท คอมพิวเตอร์ที่ Steve Jobs ก่อตั้งขึ้นหลังจากเขาออกจาก Apple ในปี 1985 และ NextStep เป็นระบบปฏิบัติการ (อิง UNIX) พร้อมด้วยภาษา Obj-C และรันไทม์ เมื่อรวมกับไลบรารีและเครื่องมือต่างๆแล้ว NextStep ก็ถูกเปลี่ยนชื่อเป็น OpenStep ในภายหลัง (ซึ่งเป็นชื่อบน API ที่ NeXT พัฒนาร่วมกับ Sun) ซึ่งต่อมากลายเป็นโกโก้
ชื่อที่แตกต่างกันเหล่านี้ค่อนข้างสับสน (โดยเฉพาะอย่างยิ่งเนื่องจากชื่อบางชื่อแตกต่างกันเฉพาะในกรณีที่อักขระเป็นตัวพิมพ์ใหญ่หรือตัวเล็ก .. ) ให้ลองคำอธิบายนี้:
จากเอกสารนักพัฒนาของ Apple:
บันทึกทางประวัติศาสตร์: หากคุณสงสัยว่าทำไมห้องเรียนจำนวนมากที่คุณพบมีคำนำหน้า NS นั่นเป็นเพราะประวัติศาสตร์ในอดีตของ Cocoa และ Cocoa Touch Cocoa เริ่มต้นชีวิตด้วยเฟรมเวิร์กที่รวบรวมมาเพื่อสร้างแอพสำหรับระบบปฏิบัติการ NeXTStep เมื่อ Apple ซื้อ NeXT กลับมาในปี 1996 NeXTStep ส่วนใหญ่ได้รวมอยู่ใน OS X รวมถึงชื่อคลาสที่มีอยู่ Cocoa Touch ได้รับการแนะนำในฐานะ iOS ที่เทียบเท่ากับ Cocoa บางคลาสมีให้บริการทั้งใน Cocoa และ Cocoa Touch แม้ว่าจะมีคลาสจำนวนมากที่ไม่ซ้ำกันในแต่ละแพลตฟอร์ม คำนำหน้าตัวอักษรสองตัวเช่น NS และ UI (สำหรับองค์ประกอบส่วนต่อประสานผู้ใช้บน iOS) สงวนไว้สำหรับการใช้งานโดย Apple
(เน้นเพิ่ม)
คลาส Cocoa เริ่มต้นด้วยคำย่อ"NS" (ยืนสำหรับการสร้าง NeXT-Sun ของ OpenStepหรือสำหรับคำที่เป็นกรรมสิทธิ์ดั้งเดิมสำหรับกรอบ OpenStep, NeXTSTEP ): NSString, NSArray เป็นต้น
มูลนิธิ Kitหรือมากกว่าปกติเพียงมูลนิธิปรากฏตัวครั้งแรกใน OpenStep สำหรับ Mac OS X นั้นใช้พื้นฐานของ Core Foundation Foundation เป็นไลบรารีเชิงวัตถุทั่วไปที่ให้การจัดการสตริงและค่าคอนเทนเนอร์และการวนซ้ำการคำนวณแบบกระจายรันลูปและฟังก์ชั่นอื่น ๆ ที่ไม่ได้เชื่อมโยงโดยตรงกับส่วนติดต่อผู้ใช้แบบกราฟิก "การ NS" คำนำหน้าใช้สำหรับทุกชั้นและค่าคงที่ในกรอบที่มาจากมรดก OPENSTEP โกโก้ซึ่งได้รับการพัฒนาร่วมกันโดยNeXTและดวงอาทิตย์
เมื่อ NeXT กำหนด NextStep API (ตรงข้ามกับระบบปฏิบัติการ NEXTSTEP) พวกเขาใช้คำนำหน้า NX เช่นเดียวกับใน NXConstantString เมื่อพวกเขากำลังเขียนข้อมูลจำเพาะ OpenStep กับ Sun (เพื่อไม่ให้สับสนกับระบบปฏิบัติการ OPENSTEP) พวกเขาใช้คำนำหน้า NS เช่นเดียวกับใน NSObject
โดยทั่วไปNSมาจากN ext S TEP ระบบปฏิบัติการดั้งเดิมที่กลายเป็น Mac OS X เมื่อ Apple ซื้อกิจการ Next
ฉันต้องการอธิบายอย่างอื่นและนี่คือเหตุผลว่าทำไมมันถึงต้องการ
ใน C ++ มีเนมสเปซและเกือบทุกอย่างจะเป็นstd
นี่คือเหตุผลที่คุณมี std :: string
ใช้เนมสเปซดังนั้นจึงเป็นเรื่องยากสำหรับคุณที่จะทำผิดพลาดและคุณสามารถเขียนคลาสสตริงของคุณเองโดยไม่ขัดแย้งกับระบบ
Objective-C คือ superset of C, แต่มันไม่รวม namespaces และด้วยเหตุผลเดียวกันเหนือคลาสระบบทั้งหมดจะถูกนำหน้าด้วย NS หรือคำนำหน้าแปลก ๆ
สิ่งนี้เป็นเช่นเดียวของวิธีการทุกชั้นเรียน DirectX จะมีคำนำหน้าD3Dและวิธีการทุกชั้นเรียน OpenGL จะมีคำนำหน้าGL
ซึ่งหมายความว่าคุณไม่ควรใช้NSเพื่อตั้งชื่อคลาสของคุณเองและเมื่อคุณเห็นNS , CAใน Core Animation หรือCGใน Core Graphics คุณเข้าใจว่านี่เป็นการเรียกไปยังเฟรมเวิร์กระบบ
Swift เปลี่ยนการประชุมนี้เนื่องจาก Swift รองรับการกำหนดเนมสเปซและแมปประเภทหลักของมันเช่น String กับ NS ที่เทียบเท่า
Bill Bumgarner aka @bbum ใครควรรู้โพสต์ในรายชื่อผู้รับจดหมาย CocoaBuilder ในปี 2005 :
Sun เข้ามาในรูปเล็กน้อยหลังจากคำนำหน้า NS เข้ามาเล่น คำนำหน้า NS เกิดขึ้นใน API สาธารณะในระหว่างการย้ายจาก NeXTSTEP 3.0 ไปยัง NeXTSTEP 4.0 (หรือที่รู้จักในชื่อ OpenStep) ก่อนหน้า 4.0 สัญลักษณ์จำนวนหนึ่งใช้คำนำหน้า NX แต่คลาสส่วนใหญ่ที่มีในไลบรารีระบบไม่ได้นำหน้า - รายการ, Hashtable, View, etc ...
ดูเหมือนว่าทุกคนยอมรับว่ามีการใช้คำนำหน้า NX (สำหรับ NeXT) จนถึงปี 1993/1994 และเอกสารของ Apple บอกว่า :
OpenStep API อย่างเป็นทางการที่เผยแพร่ในเดือนกันยายนปี 1994 เป็นคนแรกที่แยก API ระหว่าง Foundation และ Application Kit และเป็นคนแรกที่ใช้คำนำหน้า“ NS”