คำถามติดแท็ก dynamic-linking

2
เหตุใด Apple จึงอนุญาตเฉพาะสำหรับ Static Frameworks บน iOS
เห็นได้ชัดว่า Apple มีความสามารถในการสร้างไลบรารี่ที่โหลดแบบไดนามิก (เรียกว่าเฟรมเวิร์ก) สำหรับ iOS เนื่องจากพวกมันมาพร้อมกับ XCode (เช่น UIKit) นักพัฒนาแอปมีความสามารถในการสร้างห้องสมุดแบบคงที่หรืออย่างดีที่สุดหลอก Xcode ให้คิดว่ามันกำลังโหลดเฟรมเวิร์กเมื่อมันโหลดไลบรารีแบบสแตติกจริง ๆ แล้วสิ่งนี้เรียกว่าการสร้างเฟรมปลอม แต่ไม่มีประโยชน์ในการโหลดแบบไดนามิก เหตุผลของ Apple ในการป้องกันเฟรมเวิร์กแบบไดนามิกจากนักพัฒนาแอพคืออะไร ดูเหมือนว่าจะช่วยลดความยุ่งยากในการใช้งานไลบรารีภายนอกเนื่องจากผู้พัฒนาไม่จำเป็นต้องพึ่งพาแฟล็กเกอร์ลิงค์ฟิงเกอร์หรือการพึ่งพาไลบรารีโอเพนซอร์ส ฉันเห็นเหตุผลทั่วไปคือความปลอดภัย เหตุใด Apple จึงอนุญาตบน OSX และไม่ใช่ iOS การรักษาความปลอดภัยไม่ใช่ข้อกำหนดที่มีเช่นกัน? แก้ไข: นี่ไม่เกี่ยวข้องกับ iOS 8 อีกต่อไป Apple ได้เพิ่มการรองรับเฟรมเวิร์กแบบไดนามิก

3
มันเป็นสิ่งสำคัญที่ทำให้งงงวยรหัสแอปพลิเคชัน C ++?
ในโลก Java ดูเหมือนว่าบางครั้งจะมีปัญหา แต่สิ่งที่เกี่ยวกับ C ++? มีวิธีแก้ไขปัญหาต่าง ๆ หรือไม่? ฉันคิดเกี่ยวกับความจริงที่ว่าบางคนสามารถแทนที่ไลบรารี C ++ ของระบบปฏิบัติการที่เฉพาะเจาะจงด้วยเวอร์ชันเดียวกันของไลบรารีเดียวกัน แต่เต็มไปด้วยสัญลักษณ์การดีบักเพื่อทำความเข้าใจว่าโค้ดของฉันทำอะไร การใช้ไลบรารีมาตรฐานหรือห้องสมุดยอดนิยมเป็นสิ่งที่ดีหรือไม่? สิ่งนี้สามารถเกิดขึ้นได้กับไลบรารี่ dll บางตัวใน Windows แทนที่ด้วย "debug version" ของไลบรารี่นั้น มันจะดีกว่าที่จะรวบรวมแบบคงที่? ในแอพพลิเคชั่นเชิงพาณิชย์ฉันเห็นว่าแกนหลักของแอพของพวกเขารวบรวมทุกอย่างในแบบสแตติกและส่วนใหญ่ dll (ไลบรารีไดนามิกทั่วไป) ใช้เพื่อเสนอเทคโนโลยีของบุคคลที่สามเช่นโซลูชั่นต่อต้านการละเมิดลิขสิทธิ์ (ฉันเห็นในเกมหลายเกม ), ไลบรารี GUI (เช่น Qt), ไลบรารี OS ฯลฯ การรวบรวมแบบคงที่เทียบเท่ากับการทำให้งงงวยในโลก Java หรือไม่? ในแง่ที่ดีกว่าเป็นวิธีที่ดีที่สุดและประหยัดที่สุดในการปกป้องรหัสของคุณหรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.