คำถามติดแท็ก objective-c-runtime

4
วิธีเขียนแอป iOS ใน C เท่านั้น
ฉันอ่านที่นี่เรียนรู้ C ก่อน Objective-C? ปกติแล้วฉันจะแทนที่รหัส Obj-C บางส่วนด้วยรหัสบริสุทธิ์ (หลังจากทั้งหมดคุณสามารถผสมได้มากเท่าที่คุณต้องการเนื้อหาของวิธี Obj-C สามารถเป็นรหัส C บริสุทธิ์ทั้งหมด) มันเป็นเรื่องจริงเหรอ? เป็นไปได้หรือไม่ที่จะสร้างแอพ iPhone ในภาษา C อย่างแท้จริง?

3
คลาส Objective-C -> สตริงที่ต้องการ: [NSArray className] -> @“ NSArray”
ฉันพยายามรับชื่อสตริงของคลาสจากอ็อบเจกต์คลาสเอง // For instance [NSArray className]; // @"NSArray" ฉันได้พบobject_getClassName(id obj)แต่ที่ต้องมีอินสแตนซ์ถูกส่งผ่านไปและในกรณีของฉันที่ไม่จำเป็นต้องทำงาน ดังนั้นฉันจะได้รับสตริงจากวัตถุคลาสได้อย่างไรไม่ใช่ตัวอย่าง?

10
เหตุใด Objective-C จึงไม่สนับสนุนวิธีการส่วนตัว
ฉันเคยเห็นกลยุทธ์มากมายในการประกาศวิธีการกึ่งส่วนตัวในObjective-Cแต่ดูเหมือนจะไม่มีวิธีใดที่จะทำให้เป็นวิธีส่วนตัวอย่างแท้จริง ฉันยอมรับว่า แต่ทำไมถึงเป็นเช่นนั้น? โดยพื้นฐานแล้วทุกคำอธิบายที่ฉันพูดคือ "คุณทำไม่ได้ แต่นี่คือการประมาณอย่างใกล้ชิด" มีจำนวนของคำที่ใช้กับivars(สมาชิก) ที่ควบคุมขอบเขตของพวกเขาเช่น@private, ,@public @protectedเหตุใดจึงไม่สามารถทำได้สำหรับวิธีการเช่นกัน? ดูเหมือนว่าสิ่งที่รันไทม์ควรจะรองรับได้ มีปรัชญาพื้นฐานที่ฉันขาดหายไปหรือไม่? นี่คือเจตนา?

6
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% …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.