Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. iOS SDK
Code

เรียนรู้วัตถุประสงค์ c:วัน 4

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called Learn Objective-C.
Learn Objective-C: Day 3
Learn Objective-C: Day 5

Thai (ภาษาไทย) translation by Muhammad Gufron (you can also view the original English article)

ยินดีต้อนรับสู่ส่วนสี่ของชุดในจุดมุ่งหมา-C ถึงตอนนี้เรามองมาทางทฤษฎีและหลักการแล้ว functionality ของภาษาที่จะเป็นความคิดที่ดีของวิธีการทำงานของมัน วันนี้เราจะเป็นกำลังง่ายอย่างเรียนคล้ายกับรถตัวอย่างที่เรามองในก่อนหน้าส่วนของชุด คลาสของเราจะดูรายละเอียดของรถไว้ใจได้บ้ากามแถมสัประองพวกเราต้องและตั้งค่าปกป้องอยู่ หลังจากวันนี้เป็นตัวอย่างเช่นคุณควรจะสามารถสร้างของตัวเองเรียนอยู่ใน Xcode และของเล่นอยู่กับพวกเขา

ถึงตอนนี้เราต้องมีบางยิ่งการแจ้งเตือนการเริ่มทำงานผ่านทางอีเมล,ทวิตเตอร์และคำอธิบาย It's เยี่ยมมากที่ได้เจอหลายคนสนใจในเรื่องและ it's แม้แต่จะดีกว่าที่เห็นมากมายของคุณกำลังพยายามออกสำหรับตัวเองแล้วถามบางคำถามที่ดีนะ เก็บมันไว้!

เริ่ม

เริ่มด้วยการยิงขึ้น Xcode และสร้างโครงการใหม่ ใต้ comment เครื่องหมายแยกเลขหลักแล้วคลิกโปรแกรมแล้วคลิกบรรทัดคำสั่งเครื่องมือได้ ในที่สุดก็เปลี่ยนปล่อยลงกล่องเพื่อตั้งค่าประเภทที่มูลนิธิแห่งหนึ่ง

Xcode New Project

ช่วยหรับการออกแบบโครงการเป็นอะไรก็ตามที่คุณต้องการฉันเรียกว่าของฉัน CarApp น เมื่อโครงการหน้าต่างปรากฏเราต้องการจะสร้างใหม่ห้องเรียน โดนคำสั่ง-N(หรือแฟ้ม>แฟ้มใหม่),นำมายังเราเรียนภายใต้ comment และเลือกเป้าหมายเรา-C ห้องเรียน ทำให้แน่ใจว่าคลาสย่อยของตั้งค่าที่จะ NSObject และนักข่าวต่อไป ชื่อของคุณเรียน SimpleCar และให้แน่ใจว่านั่นเป็นตั้งค่าโครงการแฟ้มจะถูกสร้างขึ้นแล้วบันทึกมัน

คลาสของเราตอนนี้อยู่ก่อนแต่มันไม่มีอะไรเลย ปล่อยให้การเปลี่ยนแปลงโดยให้มันบานรหัสมอส จำได้ว่าอยู่ในจุดมุ่งหมา-C เราแบ่งของรหัสออกเป็นสองส่วน:ส่วนติดต่อกั implementation น มันทำให้สมเหตุสมผลสำหรับทำงานในส่วนติดต่อคนแรกดังนั้นนั่นคือที่ที่เราจะเริ่มต้น

ถูกเข้ารหัสฉุกเฉินส่วนติดต่อ

เปิด SimpleCar นตั้งค่าโครงการแฟ้มและในปัจจุบันของรัฐมันควรจะดูเหมือนนี้(ฉันถูกเอาออกไปจากความเห็นส่วนหัวจากด้านล่างนี้)

อย่างแรกเราจะรวมถึงโกโก้ตั้งค่าโครงการ,ซึ่งทำให้เราเข้าถึงเรื่องพวกนี้ได้อย่างไรที่ NSString,NSMutableString เป็นต้น งั้นเราสร้างคลาสของเรา(SimpleCar)เป็นคลาสย่อยของ NSObject น

ตอนนี้เราต้องตัดสินใจว่าข้อมูลคลาสของเราต้องการที่จะจัดเก็บ ตั้งแต่เรากำลังใช้รถเป็นของเราตัวอย่างเราต้องการจะจัดเก็บรถที่เกี่ยวข้องกับข้อมูลอย่างเช่น:

  • ทำให้
  • นางแบบ
  • ทะเบีย

มีหลายอย่างมากกว่าเราสามารถเข้าไปในแต่สำหรับตอนนี้จะทำแบบนั้น สำหรับแต่ละคนพวกนี้คุณสมบัติของเราต้องการจะจัดเก็บพวกเขาอยู่ในตัวแปรเหมาะสำหรับนั่นประเภทของข้อมูลออกมา ชื่อและรุ่นจะเป็นระยะของตัวอักษร(เช่นข้อความเบอร์และเป็นเครื่องหมายวรรคตอน)ดังนั้นมันสมเหตุสมผลจะต้องใช้รองข้อความ ควิ(รถการแสดงตัวของตัวเลข)จะเป็นจำนวนดังนั้นนั่นคือสิ่งที่เราจะใช้ได้ ของรหัสตอนนี้ดูเหมือนนี้(ส่วนหัวถูกเอาออกไปจาก):

ความเดิมตอนที่แล้วเราบอกว่านั่นเพื่อให้ได้หรือตั้งค่าข้อมูลจากชั้นเรียนวิธีการน่าจะใช้ได้ ดังนั้นเพื่อใช้ตั้งค่าตัวแปรเราต้องเพิ่มวิธีการของ ต้องทำอย่างนี้,เราจะทำให้สี่คน:คนนึงจะตั้งให้หนึ่งคนรุ่นหนึ่งคนทะเบียและตรวจสอบครั้งสุดท้ายวิธีการจะตั้งค่าทั้งสองชื่อและรุ่น(แค่อยากให้คุณใช้หลายอาร์กิวเมนต์หนึ่งตัว).

เราประกาศหลังจากวิธีการของกินวงเล็บปิดแล้วก่อน@จบ โดยต้องวิ่ง(ลบร่อง)ก่อนที่วิธีการ,เราบอกคอมไพเลอร์เรากำลังจะประกาศเป็นตัวอย่างวิธีการ. เป็นตัวอย่างวิธีการเป็นวิธีการประหารของเราตัวอย่างเช่น Conversely เป็นบวกกับเซ็แสดงให้เห็นว่าวิธีการ invoked คือชั้นเรียนวิธีการนั่นไม่ได้ต้องการเป็นบุคคลหนึ่งวัตถุกตัวอย่างที่จะประมวลผล-มากกว่าเรื่องนี้กันทีหลัง

ครั้งแรกของเราวิธีการจะกลับช่องว่ามันเรียกว่า setVin และต้องการ NSNumber เป็นข้อโต้แย้ง ครั้งที่สองวิธีคล้ายกันมันจะกลับช่องว่างเป็นโทรหา setMake และต้องการ NSString เป็นข้อโต้แย้ง คนที่สามคือคนเดียวกันกับชื่อที่แตกต่างจากเดิม

สุดท้ายของวิธีการยังจะได้ค่าพื้นที่ว่างปล่าแต่ต้องใช้สองคนพารามิเตอร์:newMake และ newModel ทั้งสองขอซึ่งควรจะ NSString น ที่ตั้งชื่อเคยอยู่ในวิธีการคล้ายกับแบบว่าส่วนใหญ่มุ่ง-C วิธีการกำหนดชื่อ:ในธรรมดาภาษาอังกฤษ ดังนั้นตอนที่คุณอ่านวิธีการอนุญาตให้มันชัดเจนว่าวิธีการจะ"ตั้งชื่อและรุ่น" มันสำคัญมากที่คุณต้องรู้ว่าวิธีการที่ชื่อในกรณีนี้คือ'setMake:andModel:'-ทั้งหมดแย้งชื่อบทความเป็นรวมอยู่ในวิธีการชื่อ

ที่สำคัญโน้ตที่เราใช้(ช่องว่าง)เพราะว่าวิธีการของเราไม่ต้องกลับไปอะไรนะ ตั้งแต่เรื่องทั้งหมดพวกเขากำลังทำอะไรอยู่คือการตั้งค่าข้อมูลและไม่ต้องกลับออกอะไรกลับมา(อย่างเช่นประสบความสำเร็จนักข้อความ)เราก็ใช้พื้นที่ว่างปล่าวไปได้

ต่อไปเราจะเพิ่มวิธีการของเราจะใช้เพื่อเข้าค่าย ถึงแม้ว่าเราเรียกวิธีการของเราไปและตั้งวิธีการของเราเพียงปกติจะใช้"ตั้ง"ตรงหัวเรื่องและไม่ลงรายละเอียนว่า"ได้" วิธีที่คุณชื่อของคุณวิธีการของก็คือในที่สุดขึ้นกับคุณแต่จะ"ได้"เหมือนกันและช่วยหลีกเลี่ยงความสับสน

คนใหม่ของเราตั้งค่าของวิธีการของดูเหมือนนี้:

สังเกตเห็นว่าเข้าใจวิธีการของใช้ชื่อเดียวกันเหมือตัวแปรในชั้นเรียน นี่จะทำให้มันง่ายตอนที่เราไปเอาตัวแปรได้ มันจะเป็นเหมือนว่าเราเข้าถึงตัวแปรตรง,พื้นฐานแล้วทำให้คนเอาวิธีการของปรากฎ-มันชัดเจน-ถ้่าอย่าง

เขียนโปรแกรที่ Implementation

ดังนั้นตอนนี้นั่นคือส่วนติดต่อในสถานที่แล้วเรารู้อะไรที่ชั้นเรียนจะทำเราต้องการเพื่อรับคำสั่งเข้าใจวิธีการของเรา มองย้อนกลับไปพวกเรามีสี่วิธีการของเราต้องเตรียมกำ:setVin,setMake,setModel และ setMake:andModel น ก่อนที่เราย้ายแฟ้ม,คัดลอกวิธีการ declarations ต้องของคุณยังคลิปบอร์ด(Cmd+C)ย ตอนนี้ปิด SimpleCar นh และไฟไหม้ขึ้น SimpleCar นเอ็มในเครื่องมือแก้ไขการวางเรียบร้อยจากวิธีการ declarations อยู่ในระหว่าง@implementation และ@จุดจบเหมือนแล้ว:

เห็นได้ชัดว่าแบบนี้มันไม่ถูกต้อง,ดังนั้นสิ่งที่เราต้องทำคือเปลี่ยนครึ่ง colons สำหรับไอ้หัวหยิกเล็บเปิดและปิดที่ตนภายใน workings ของวิธีการจะไป,เหมือนนี้:

ตอนนี้เราต้องให้ของวิธีการของการรหัสหรอก มาเริ่มกันที่ getter วิธีการของอย่างที่พวกเขาจะตรงไปตรงมาพอแล้ว สำหรับแต่ละ getter วิธีการทั้งหมดที่เราต้องทำก็คือทำให้มั่นใจว่าฟังก์ชันคืออะไรมันมีความตั้งใจที่จะกลับมา เพื่อเหตุผลของเรา getter วิธีการของดูเหมือนนี้:

จำ:วิธีการของเจ้าจะกลับมาอีกครั้งที่ตัวแปรที่เรากำหนดไว้ในส่วนติดต่อแฟ้ม อย่าสับสนระหว่างวิธีการชื่อและชื่อตัวแปย

นั่นมันค่อนข้างตรงไปตรงตอนที่เราเรียกให้(สำหรับตัวอย่าง)งั้นทำจะคืนค่ากลับมาเป็น pointer ต้องการ NSString-ในกรณีนี้ให้ทำตัวแปรได้ เหมือนกันเกิดขึ้นสำหรับรุ่นและทะเบียน(ยกเว้นแน่นอนทะเบียกลับมาเป็นจำนวน)

ตอนนี้สำหรับ setter วิธีการของก่อนอื่นเราจะดูที่รหัสแล้วเราจะผ่านมันหลังจากสิ่งที่เกิดขึ้น เรา setter วิธีการของดูเหมือนนี้:

ที่ตั้งค่าเป็นวิธีการของนิดหน่อ trickier กว่าของเราหาวิธีการของ เราต้องการ alloc งค่าต่างๆที่ผ่านไปในแต่ละวิธีการดังนั้นพวกเขาเป็นของชั้นเรียน เราเริ่มปล่อยตัวตัวแปรในกรณีที่พวกเขาพยายามอยู่แล้ว alloc คน ถ้าพวกเขาไม่ alloc คงงั้นพวกเขาเป็น nil และ nil วัตถุไม่สนใจข้อความผ่านกับพวกเขา พวกเราจะปกปิดพวกนี้ปัญหาเรื่องมากกว่าตอนที่ต้องการที่จะได้ยินเกี่ยวกับความทรงจำการจัดการได้

เพราะจริงๆแล้วเรากำความทรงจำของเราสำหรับวัตถุอยู่ใน setter วิธีการของพวกเราต้องแน่ใจนะว่าเราปลดปล่อยมันออกตอนที่วัตถุเป็นปล่อยตัวจากความทรงจำของฉัน เพื่อทำสิ่งนี้เราต้องเพิ่มกำหนดเอง dealloc วิธีการเหมือนแล้ว:

การทดสอบในชั้นเรียน

ขอแสดงความยินดีด้วย! ถ้าคุณตามหาทุกอย่างอยู่เหนือหลังจากนั้นเธอก็ต้องตอนนี้ต้องเป็นห้องทำงาน(หากไม่,ดาวน์โหลดต้นแฟ้มที่มีอยู่กับข่าวนี้)น ดังนั้นมาทดสอบมันออกมา

เปิดแฟ้มหลักของโครงการ(ของฉันเรียกว่า CarApp นm)ซึ่งโดยปริยายควรจะดูอะไรแบบนี้:

ลบความคิดเห็นและ NSLog รรทัดเราคงไม่ต้องใช้พวกเขาตอนนี้

เพื่อที่จะเริ่มโดยใช้คลาสของเรา,เราต้องการที่จะดึงมันเข้าไปในโปรแกรม อยู่ใต้ต้นฉบับ#นำเข้าเส้นเพิ่มตามบรรทัด:

คลาสของเราคือตอนนี้พร้อมใช้งานสำหรับใช้แต่พวกเราต้องการจะสร้างตัวอย่างของมันเพื่อที่จะทดสอบมันออกมา นี่คือรหัสที่ใช้ในทั้งหมด:

อย่างแรกทั้งหมดที่เราสร้าง pointer ต้องการตัวอย่างของ SimpleCar เรียก myCar น ต่อไปเราใช้ alloc และ init-พวกนี้จะคุยกันเรื่องหลังจากนั้นลงบรรทัด.

ต่อไปเมื่อเราต้องผ่านกา NSNumber ที่ setVin วิธีการเราให้คนอยู่ที่นี่ อีกครั้งเราสร้าง pointer ต้องการ NSNumber ตัวอย่างเรียก newVin และพวกเราเริ่มมันกับค่าจำนวนเต็มของ 123 น คนอย่างต่อเนื่องเพ 123'เป็นจำนวนเต็มซึ่งคือเหตุผลว่าทำไมเราใช้ numberWithInt น

ต่อไปเราเรียกร้องของวิธีการของอย่างแรกทั้งหมดที่เราทำให้ใครควรได้รับข้อความ(myCar)แล้วเราใช้วิธีการ setVin น หลังจากลำไส้คนเรายาวคืนค่ากลับมาเป็นค่าเป็นค่าเราเป็น supplying ไปที่วิธีการซึ่งเป็น NSNumber เราสร้างขึ้นมาก่อน ต่อไปเราทำแบบเดียวกันแต่โทรหา setMake วิธีการกับสองคนพารามิเตอร์นะ เหตุผลที่พวกค่าพารามิเตอร์เป็น preceded โดยการ@เซ็นคือต้องบอกคนที่คอมไพเลอร์นั่นต่อไปนี้คือข้อความ

ในที่สุดเราปลดปล่อย myCar อย่างที่เราต้องจบมัน-มากกว่าเรื่องนี้ทีหลังอยู่ในรกอนุกรมภายใต้ความทรงจำการจัดการได้

คลาสของเราคือตอนนี้ทำงานและในการที่จะเห็นหลักฐานเราถูกเพิ่มบางอย่า NSLog การให้สอบสวนเพื่อพิมพ์ค่าไปที่คอนโซลได้ ถ้าคุณเปิดคอนโซล(หนี>นคอนโซล)และจากนั้นสร้างขึ้นแล้วหนีของคุณโปรแกรมคุณควรจะเห็นผลลัพธ์เดียวกันนี้:

Debugger

ทรัพย์สินและจะสังเคราะห์

ถ้าคุณดูที่รหัสอยู่เหนือเรื่องมากมายของมันดูเหมือนว่าค่อนข้างไร้ประโยชน์และกำน สำหรับตัวอย่างของเรา getter วิธีการของทั้งหมดที่เราทำอยู่มันกลับมาเป็นตัวอย่างแปรเปลี่ยนแต่นี่ต้องใช้มาสามบรรทัดของรหัสที่จะทำบางอย่างง่ายๆ แล้วก็อยู่ในของเรา setter วิธีการของเราเป็นแค่การตั้งค่าตัวแปรตัวอย่าง-โดยพื้นฐานของเราทั้งหมดวิธีการขอยกเว้นวิธีการของเรานั้นต้องใช้อาร์กิวเมนต์สองคน,ดูเหมือนอ้วนและอยู่อย่างนี้ เป้าหมายเรา-C รอก่อนรอก่องนี้กับ@ทรัพย์สินและ@จะสังเคราะห์ซึ่งแทนที่ของเรา accessor วิธีการของและทำให้เพื่อนมาก neater ถูกเข้ารหัสฉุกเฉิน

นี่คือสิ่งที่เราสองคนใหม่ส่วนติดต่อแฟ้มดูเหมือนจะใช้คุณสมบัติของ:

ว้าวนั่นจริงๆมันมากยิ่งสั้นมากขึ้น ดังนั้นสิ่งที่เกิดขึ้นกับคอนเครื่องทรัพย์สิน declarations? ตอนแรกเราบอกคอมไพเลอร์เราขอประกาศว่าเป็นทรัพย์สินโดยการใช้@ทรัพย์สินแล้วเราตามไปกับคุณลักษณะสำหรับบ้านนี้ คุณลักษณะเป็นรอ่าน/เขียนสถานะของทรัพย์สินและความทรงจำการจัดการได้ เราต้องใช้ readwrite สำหรับทั้งหมดซึ่งหมายความว่า getter และ setter วิธีการของพ dynamically กสร้างขึ้นสำหรับของเราตัวอย่างตัวแปร(เราสามารถของเคย writeonly หรือ readonly เพื่อเพิ่งอยู่แค่อย่างใดอย่างหนึ่ง). เหตุผลที่เราใช้จ้างจะค่อยๆ\n ชัดเจนขึ้นครั้งหน้าเมื่อตอนที่เราปกปิดความทรงจำการจัดการได้

ก่อนที่เรื่องสามารถทำงานเราต้องด้วยอะไรซักอย่างมันในของเรา implementation แฟ้มเราทำแบบนี้โดยใช้@จะสังเคราะห์น คนใหม่ของเรา implementation แฟ้มดูเหมือนนี้:

ไม่คิดว่าเรื่องแบบนี้มันดูดีขึ้น? คิดว่ามันเหมือนนี้@ที่ดินก็แทนที่ทั้งหมดส่วนติดต่อวิธีการ declarations สำหรับรัและ setters และ@จะสังเคราะห์ก็แทนที่แท้จริงวิธีการของตัวเอง ที่รัและ setters ตอนนี้ dynamically กสร้างขึ้นและเราไม่จำเป็นต้องเสียเวลาสร้างพวกเขาเว้นแต่ว่าเราต้องทำอะไรบางอย่างที่วิเศษจริงๆนะ

จัดกา

คุณควรจะตอนนี้มีบริษัทจับอย่างเรียนวัตถุและแผล แน่นอนคุณไม่ได้กำลังสร้างชั้นเรียนนั่นจะเปลี่ยนโลกเลยแต่ของพวกนี้ต้องใช้เวลา มันจะดีกว่าที่จะเรียนรู้จากตัวอย่างเช่นถ้าคุณไม่เขียนโปรแกรเช่นคุณไปด้วยแล้วทำให้แน่ใจว่าอย่างน้อยดาวน์โหลดต้นแฟ้มและมีคนอ่านผ่าน(และกา compile)เพื่อให้แน่ใจว่าคุณ 100%ว่าเกิดอะไรขึ้น

ครั้งต่อไป

เราเคยพูดถึงความทรงจำการจัดการมากมายในหัดเล่น,มันสำคัญมากเรื่องที่ต้องจ่า(เอปเปอร์ลี่นี่เพื่อนฉันชัคแบ)ดังนั้นเราจะดำลงไปในนั้นครั้งต่อไป เรื่องจริงมันไม่สนุกที่สุดที่เรื่องหรือที่ง่ายที่สุดจะต้องยอมรับแต่แน่นอนว่ามันเป็นเรื่องสำคัญถ้าคุณจะบอกว่าคุณอยากจะเป็นคนที่มีทักษะการเป้าหมายเรา-C โปรแกรมเมอร์

ท้าทาย

สัปดาห์นี้เป็นการท้าทายอาจจะเป็นเจ้าเล่ห์นิดหน่อยแต่พวกเราจะเห็นว่าคุณจะไปต่อไป อย่างแรกถ้าคุณยังไม่ได้คัดลอกทั้งหมดรหัสอยู่เหนือดาวน์โหลดต้องแฟ้มที่ถูกรวมกับบทความนี้นะ ความท้าทายเพื่อเพิ่มอีกชั้นเรียนต้องรับการออกแบบโครงการแต่ครั้งนี้มันควรจะเป็นคลาสย่อยของ SimpleCar(จำได้ไหมเรากำหนดพ่อแม่สอนในอินเทอร์เฟสลงแฟ้ม)ย ถ้าคุณสามารถทำอย่างนั้นเล่นอยู่และใช้สืบทอดวิธีการของและพยายามที่จะเพิ่มของตัวเองสำหรับเรื่องอย่างเช่น:เครื่องยนต์ขนาดประตูหรือความสูงของนะ

จำ:หากคุณต้องการสอบถามเพิ่มเติมหรือค้นข้อมูงความเห็นทางด้านล่างนี้หรือยิงฉันเป็นข้อความบนทวิตเตอร์นะ เพียงคำถามที่โง่คือคนที่คุณไม่ได้ถาม-สือเรื่องการเรียนรู้แล้วรู้สึกอิสระที่จะถามได้!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.