หลังจากที่ Apple ได้ปล่อย xcode 14 ซึ่งมาพร้อมกับเครื่องมือใหม่ๆ ที่ช่วยให้เราทำงานได้ง่ายขึ้นหรือมีของใหม่ๆ มาให้เราเล่นกัน และหนึ่งในนั้นคือ Swift version 5.7 ที่ได้ใส่ลงมาใน xcode นี้ด้วย ในบทความนี้จะยกตัวอย่างที่นักพัฒนาอย่างเราจะเจอกันบ่อยๆ ไปลุยกันเลย Swift คืออะไร Swift คือภาษาสำหรับเขียนโปรแกรมใน eco system ของ apple เราสามารถใช้ภาษานี้ในการพัฒนาโปรแกรมเพื่อให้ใช้ในผลิตภัทธ์ของ apple ได้ครบ โดยที่ภาษา Swift จะเป็นภาษาที่เป็น open source จะได้รับการปรับปรุงมาจากบุคคลทั่วไป ซึ่งเป็นขอดีที่จะทำให้ภาษาไม่ตายตัวอยู่กับบริษัทใด บริษัทหนึ่ง และยังคงมีนักพัฒนาหลายๆ คนเข้าไปช่วยพัฒนาต่ออีกด้วย…

Swift 5.7 มีอะไรใหม่บ้าง มาดูกัน!
Swift 5.7 มีอะไรใหม่บ้าง มาดูกัน!

เช่ือผมไหม ? คุณเคยคงรู้สึกว่า อยากอ่านหนังสือ แต่ขี้เกียจ อยากรู้เรื่องในหนังสือนั้น แต่ขี้เกียจ วันนี้ผมจะมาเล่าอะไรให้ฟังกับ หนังสือที่มีเสียง เรื่องเล่า ผ่านไป 1 เดือน (31 วัน) ที่ผมได้ทดลองทำอะไรบ้างสิ่งบ้างอย่าง น่าตื่นเต้น และสนุกไปกับมัน เริ่มจาก social detox หยุดเสพข่าวบ้านข่าวเมือง(ยกเว้นข่าวหมูแพง แฮ่!) ทุกอย่างสงบเงียบ ในมือผมมีหนังสืออยู่ 2–3 เล่ม ได้แก่ atomic habit, พ่อรวยสอนลูก​ #1, พ่อรวยสอนลูก #2 ในใจก็คิดว่าได้เวลาละที่จะสะสาง 3 เล่มนี้ให้จบสักที เริ่มจาก atomic ปรากฏว่า ไม่ถึงครึ่งเล่มเริ่มเบื่อแล้วครับ 😝 (ออกตัวสะดีเลย บ้าจริ๊งงงงงงงงงง)

ชีวิต multitask กับ หนังสือที่มีเสียง
ชีวิต multitask กับ หนังสือที่มีเสียง

มีเพื่อน ๆ คนไหนกำลังทำโปรเจคที่ใช้ Combine อยู่ละก็ คงมีคำถามคาใจ แต่ขี้เกียจหาคำตอบ มาอ่านอันนี้เพราะผมมีคำถามคาใจเหมือนกัน หลังจากที่ได้ learning and doing เจ้า swift ui ร่วมกับ combine แบบ 2 way data binding ผมก็ได้เห็นอะไรสะดุดใจตรงที่ method receive(on:options:) พอย้อนกลับไปหาใน document ของ apple ก็ยิ่งสงสัยมากขึ้นว่า ทำไมเค้าถึงเลือกใช้ RunLoop.main ต่างจาก DispatchQueue.main จนไปพบว่า ทั้ง 2 ทำ method นี้เป็น scheduler เหมือนกันแต่ต่างกันตรงที่การทำงานจะคนละสถานการณ์กัน กล่าวคือ ตัว RunLoop.main จะเป็น default mode ของ loop จะมีไว้เพื่อ update ตัว UI และจะไม่มีการรับ signal ใดๆจาก user interactive นั้นเอง โดยการเรียกของเจ้าตัวนี้จะไปเรียก RunLoop.main.preform เพื่อใช้งาน

RunLoop.main กับ DispatchQueue.main ต่างกันยังไง
RunLoop.main กับ DispatchQueue.main ต่างกันยังไง