Swift native base class หรือ NSObject
ผมทดสอบออกบางswizzling ISAกับสวิฟท์และพบว่ามันทำงานเฉพาะเมื่อ NSObject เป็นซุปเปอร์ชั้น (โดยตรงหรือเพิ่มขึ้นต่อไป) หรือโดยการใช้ '@objc' ตกแต่ง มิฉะนั้นจะเป็นไปตามรูปแบบการจัดส่งแบบคงที่และแบบ vtable เช่น C ++ เป็นเรื่องปกติหรือไม่ที่จะกำหนดคลาส Swift โดยไม่มีคลาสพื้นฐานของ Cocoa / NSObject หากเป็นเรื่องที่ฉันกังวลนี่หมายถึงพลวัตของ Objective-C ที่กล่าวมาข้างต้นเช่นการสกัดกั้นวิธีการและการวิปัสสนาแบบรันไทม์ พฤติกรรมเวลาทำงานแบบไดนามิกนั่งอยู่ในหัวใจของคุณสมบัติเช่นสังเกตการณ์คุณสมบัติหลักข้อมูลที่มุมมอง Oriented Programming , อุดมศึกษาสั่งซื้อการส่งข้อความ , การวิเคราะห์และกรอบการเข้าสู่ระบบและอื่น ๆ การใช้รูปแบบการเรียกใช้เมธอดของ Objective-C จะเพิ่มตัวถูกดำเนินการรหัสเครื่องประมาณ 20 ตัวให้กับการเรียกใช้เมธอดดังนั้นในบางสถานการณ์ (การเรียกใช้เมธอดที่มีขนาดเล็กจำนวนมาก ) การจัดส่งแบบสแตติกและ vtable สไตล์ C ++ สามารถทำงานได้ดีขึ้น แต่ด้วยกฎ 95-5 ทั่วไป ( 95% ของประสิทธิภาพที่เพิ่มขึ้นมาจากการปรับแต่งโค้ด 5% …