The Customer instance now has a strong reference to the CreditCard ins การแปล - The Customer instance now has a strong reference to the CreditCard ins ไทย วิธีการพูด

The Customer instance now has a str

The Customer instance now has a strong reference to the CreditCard instance, and the CreditCard instance has an unowned reference to the Customer instance. Because of the unowned customer reference, when you break the strong reference held by the john variable, there are no more strong references to the Customer instance:
Because there are no more strong references to the Customer instance, it is deallocated. After this happens, there are no more strong references to the CreditCard instance, and it too is deallocated:
john = nil
// prints "John Appleseed is being deinitialized"
// prints "Card #1234567890123456 is being deinitialized"
The final code snippet above shows that the deinitializers for the Customer instance and CreditCard instance both print their “deinitialized” messages after the john variable is set to nil.
Unowned References and Implicitly Unwrapped Optional Properties
The examples for weak and unowned references above cover two of the more common scenarios in which it is necessary to break a strong reference cycle. The Person and Apartment example shows a situation where two properties, both of which are allowed to be nil, have the potential to cause a strong reference cycle. This scenario is best resolved with a weak reference. The Customer and CreditCard example shows a situation where one property that is allowed to be nil and another property that cannot be nil have the potential to cause a strong reference cycle. This scenario is best resolved with an unowned reference. However, there is a third scenario, in which both properties should always have a value, and neither property should ever be nil once initialization is complete. In this scenario, it is
useful to combine an unowned property on one class with an implicitly unwrapped optional property on the other class. This enables both properties to be accessed directly (without optional unwrapping) once initialization is complete, while still avoiding a reference cycle. This section shows you how to set up such a relationship. The example below defines two classes, Country and City, each of which stores an instance of the other class as a property. In this data model, every country must always have a capital city, and every city must always belong to a country. To represent this, the Country class has a capitalCity property, and the City class has a country property:
0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
อินสแตนซ์ลูกค้าขณะนี้มีการอ้างอิงอินสแตนซ์เครดิตการ์ดแข็งแรง และอินสแตนซ์เครดิตการ์ดมีการอ้างอิง unowned กับอินสแตนซ์ของลูกค้า เนื่องจากการอ้างอิงลูกค้า unowned เมื่อคุณแบ่งการอ้างอิงที่แข็งแรงขึ้น โดยตัวแปรของจอห์น มีการไม่แข็งแรงอ้างอิงกับอินสแตนซ์ของลูกค้า:เนื่องจากมีการอ้างอิงแข็งแรงไม่มีอินสแตนซ์ของลูกค้า มันคือ deallocated หลังจากนี้เกิดขึ้น มีการอ้างอิงที่แข็งแกร่งไม่มีอินสแตนซ์เครดิตการ์ด และมันเกินไปคือ deallocated:จอห์น = nil นั่นพิมพ์ "จอห์น Appleseed เป็นการ deinitialized"พิมพ์ "บัตร #1234567890123456 เป็นการ deinitialized"สุดท้ายโค้ดข้างต้นแสดงว่า deinitializers สำหรับอินสแตนซ์ลูกค้าและอินสแตนซ์เครดิตการ์ดทั้งพิมพ์ข้อความ "deinitialized" ของพวกเขาหลังจากตั้งค่าตัวแปรจอห์นเป็น nil นั่นอ้างอิง unowned และคุณสมบัติเพิ่มเติมของนัย Unwrappedตัวอย่างสำหรับอ้างอิงอ่อน และ unowned ข้างต้นครอบคลุมสองสถานการณ์ทั่วไปซึ่งจำเป็นต้องตัดวงจรอ้างอิงแข็งแรง ตัวอย่างบุคคลและอพาร์ทเมนท์แสดงสถานการณ์ที่สอง ซึ่งทั้งสองได้เป็น nil มีศักยภาพในการทำให้วงจรอ้างอิงแข็งแรง สถานการณ์นี้เป็นส่วนแก้ไขการอ้างอิงที่อ่อนแอ ตัวอย่างลูกค้าและเครดิตการ์ดแสดงสถานการณ์ที่แห่งหนึ่งที่ได้รับอนุญาตให้เป็น nil และอีกแห่งที่ไม่ nil มีศักยภาพในการทำให้วงจรอ้างอิงแข็งแรง สถานการณ์นี้เป็นส่วนแก้ไขการอ้างอิง unowned อย่างไรก็ตาม มีสถานการณ์สมมติสาม ซึ่งคุณสมบัติทั้งสองควรมีค่า และไม่เคยต้อง nil เมื่อเริ่มต้นเสร็จสมบูรณ์แล้ว ในสถานการณ์สมมตินี้ประโยชน์รวมมีคุณสมบัติ unowned บนชั้นหนึ่งกับชั้นอื่น ๆ คุณสมบัติเพิ่มเติมการนัย unwrapped ช่วยนี้จะเข้าถึงได้โดยตรง (โดยไม่จำเป็น unwrapping) เมื่ออ้างอิงขณะสมบูรณ์ เตรียมใช้งานคุณสมบัติทั้งสองรอบ ส่วนนี้แสดงวิธีการตั้งค่าความสัมพันธ์ ตัวอย่างด้านล่างนี้กำหนด 2 ชั้น เมือง ซึ่งเก็บอินสแตนซ์ของคลาสที่เป็นคุณสมบัติและประเทศ ในรูปแบบข้อมูลนี้ ทุกประเทศต้องมีเมืองหลวง และทุกเมืองจะต้องเป็นของประเทศ ถึงนี้ ระดับประเทศมีคุณสมบัติ capitalCity และระดับเมืองมีคุณสมบัติประเทศ:
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!
ตัวอย่างเช่นลูกค้าตอนนี้มีการอ้างอิงที่แข็งแกร่งในการเช่น CreditCard และ CreditCard เช่นมีการอ้างอิงไม่มีเจ้าของอินสแตนซ์ของลูกค้า เพราะการอ้างอิงของลูกค้าไม่มีเจ้าของเมื่อคุณทำลายอ้างอิงที่แข็งแกร่งที่จัดขึ้นโดยตัวแปร john ไม่มีการอ้างอิงที่แข็งแกร่งมากขึ้นในการตัวอย่างเช่นลูกค้า:
เพราะไม่มีการอ้างอิงที่แข็งแกร่งมากขึ้นเพื่อลูกค้าเช่นนั้นจะถูก deallocated หลังจากที่เกิดเหตุการณ์นี้ไม่มีการอ้างอิงที่แข็งแกร่งมากขึ้นไปเช่น CreditCard และมันเกินไปจะ deallocated:
john = ศูนย์
// พิมพ์ "จอห์นขุนจะถูก deinitialized"
// พิมพ์ "บัตร # 1234567890123456 จะถูก deinitialized"
โค้ดสุดท้ายดังกล่าวข้างต้น แสดงให้เห็นว่า deinitializers สำหรับตัวอย่างเช่นลูกค้าและ CreditCard ทั้งพิมพ์ข้อความ "deinitialized" ของพวกเขาหลังจากตัวแปรจอห์นถูกตั้งค่าเป็นศูนย์.
อ้างอิงไม่มีเจ้าของและแกะโดยปริยายถ้าต้องการคุณสมบัติ
ตัวอย่างอ้างอิงที่อ่อนแอและไม่มีเจ้าของเหนือปกสองสถานการณ์ที่พบมากใน ซึ่งมันเป็นสิ่งจำเป็นที่จะทำลายวงจรการอ้างอิงที่แข็งแกร่ง บุคคลและเป็นตัวอย่างแสดงให้เห็นถึงอพาร์ทเมนสถานการณ์ที่สองคุณสมบัติทั้งสองที่ได้รับอนุญาตให้เป็นศูนย์มีศักยภาพที่จะก่อให้เกิดวงจรการอ้างอิงที่แข็งแกร่ง สถานการณ์นี้ได้รับการแก้ไขที่ดีที่สุดกับการอ้างอิงที่อ่อนแอ ลูกค้าและเป็นตัวอย่างที่แสดงให้เห็น CreditCard สถานการณ์ที่หนึ่งสถานที่ให้บริการที่ได้รับอนุญาตให้เป็นศูนย์และทรัพย์สินอื่นที่ไม่สามารถเป็นศูนย์มีศักยภาพที่จะก่อให้เกิดวงจรการอ้างอิงที่แข็งแกร่ง สถานการณ์นี้ได้รับการแก้ไขที่ดีที่สุดกับการอ้างอิงไม่มีเจ้าของ แต่มีสถานการณ์ที่สามซึ่งคุณสมบัติทั้งควรมีค่าและทรัพย์สินไม่ควรที่เคยเป็นศูนย์เริ่มต้นที่ครั้งหนึ่งเคยเป็นที่สมบูรณ์ ในสถานการณ์นี้มันเป็นสิ่ง
ที่มีประโยชน์ที่จะรวมคุณสมบัติที่ไม่มีเจ้าของในระดับหนึ่งที่มีคุณสมบัติเป็นตัวเลือกที่อยากได้โดยปริยายในระดับอื่น ๆ คุณสมบัตินี้จะช่วยให้ทั้งสองจะได้รับการเข้าถึงได้โดยตรง (โดยไม่ต้องแกะตัวเลือก) เริ่มต้นที่ครั้งหนึ่งเคยเป็นที่สมบูรณ์ขณะที่ยังคงหลีกเลี่ยงวงจรอ้างอิง ในส่วนนี้จะแสดงให้คุณเห็นวิธีการตั้งค่าความสัมพันธ์ดังกล่าว ตัวอย่างด้านล่างกำหนดสองชั้น, ประเทศและเมืองแต่ละที่เก็บตัวอย่างของชั้นอื่น ๆ ที่เป็นทรัพย์สิน ในรูปแบบข้อมูลนี้ทุกประเทศจะต้องมีเมืองหลวงและเมืองที่ทุกคนจะต้องอยู่ในประเทศ นี้จะเป็นตัวแทนระดับประเทศมีทรัพย์สิน capitalCity และระดับเมืองมีคุณสมบัติในประเทศ:
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!
ตัวอย่างลูกค้า ขณะนี้มีการอ้างอิงที่แข็งแกร่งกับบัตรเครดิตและบัตรเครดิต เช่น ตัวอย่างมีการอ้างอิง unowned กับอินสแตนซ์ของลูกค้า เพราะลูกค้าอ้างอิง unowned เมื่อคุณแบ่งแรงอ้างอิงตัวแปรที่จัดขึ้นโดยจอห์น ไม่มีการอ้างอิงที่แข็งแกร่งมากขึ้นตัวอย่างลูกค้า :
เพราะไม่มีการอ้างอิงที่แข็งแกร่งมากขึ้น ตัวอย่างลูกค้ามันเป็น deallocated . หลังจากเกิดเหตุการณ์นี้ ไม่มีการอ้างอิงที่แข็งแกร่งมากขึ้นในบัตรเครดิตเป็นอินสแตนซ์ และมันก็เป็น deallocated :
0
/ / จอห์น = พิมพ์ " จอห์น appleseed ถูก deinitialized "
/ / พิมพ์บัตร# 1234567890123456 ถูก deinitialized "
สุดท้ายโค้ดข้างต้นแสดงให้เห็นว่า deinitializers สำหรับลูกค้าบัตรเครดิตและอินสแตนซ์ตัวอย่างทั้งสองพิมพ์ ของพวกเขา " deinitialized " ข้อความหลังจากตัวแปรจอห์นถูกตั้งค่าเป็นศูนย์ อ้างอิงไม่ได้ และ unowned โดยปริยาย

เลือกคุณสมบัติตัวอย่างสำหรับอ่อนแอและ unowned อ้างอิงข้างต้นครอบคลุมสองสถานการณ์ทั่วไปที่มีความจําเป็นต้องตัดวงจรอ้างอิงที่แข็งแกร่ง คน และห้องตัวอย่าง แสดงให้เห็นถึงสถานการณ์ที่ทั้งสองคุณสมบัติทั้งสองซึ่งอนุญาตให้ศูนย์มีศักยภาพที่จะก่อให้เกิดวงจรอ้างอิงที่แข็งแกร่ง ฉากนี้เป็นฉากที่ดีที่สุดการแก้ไขการอ้างอิงที่อ่อนแอลูกค้าบัตรเครดิต และตัวอย่างแสดงให้เห็นสถานการณ์ที่คุณสมบัติที่อนุญาตให้นิลและทรัพย์สินอื่นที่ไม่สามารถนิลมีศักยภาพที่จะก่อให้เกิดวงจรอ้างอิงที่แข็งแกร่ง ฉากนี้เป็นฉากที่ดีที่สุดการแก้ไขอ้างอิง unowned . อย่างไรก็ตาม มีสถานการณ์ที่สาม ซึ่งคุณสมบัติทั้งสองควรมีค่าและไม่มีคุณสมบัติจะถูกนิลเมื่อเริ่มต้นที่สมบูรณ์ ในสถานการณ์สมมตินี้ มันเป็นประโยชน์ที่จะรวมคุณสมบัติ unowned
ในหนึ่งชั้นเรียนกับโดยปริยาย ซึ่งถ้ามีคุณสมบัติในชั้นเรียนอื่น ๆ นี้จะช่วยให้ทั้งสองคุณสมบัติที่จะเข้าถึงได้โดยตรง ( โดยไม่มีตัวเลือก unwrapping ) เมื่อเริ่มต้นเสร็จสมบูรณ์ในขณะที่ยังคงหลีกเลี่ยงการอ้างอิงรอบส่วนนี้จะแสดงวิธีการตั้งค่าความสัมพันธ์เช่นนี้ . ตัวอย่างด้านล่างกำหนดสองระดับ ประเทศ และเมือง ซึ่งแต่ละร้านมีอินสแตนซ์ของคลาสอื่น ๆ คุณสมบัติ ในนี้ข้อมูลแบบ ทุกประเทศต้องมีเมืองหลวง และเมืองทุกคนต้องเป็นของประเทศ เพื่อแสดงนี้ ประเทศชั้นมี capitalcity คุณสมบัติและเมืองชั้นมีประเทศคุณสมบัติ :
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2024 I Love Translation. All reserved.

E-mail: