แฟล็ก -ObjC linker ทำอะไร


136

ฉันมีแอพที่ทำงานร่วมกับและไม่มีธงลิงเกอร์ อย่างไรก็ตามหากไม่มีการตั้งค่าตัวเชื่อมโยงฉันจะได้รับพฤติกรรมที่แตกต่างกันมากเมื่อเพิ่มข้อมูลลงในมุมมอง


1
bensarz คุณจะได้รับพฤติกรรมที่แตกต่างโดยไม่มีธง linker ... นั่นหมายความว่าอย่างไร? แตกต่างกันอย่างไร
Adil Hussain

คำตอบ:


158

การตั้งค่าสถานะนี้ทำให้ linker โหลดทุกวัตถุไฟล์ในไลบรารีที่กำหนดคลาสหรือหมวดหมู่ Objective-C ในขณะที่ตัวเลือกนี้โดยทั่วไปจะส่งผลให้เกิดการปฏิบัติการที่มีขนาดใหญ่ขึ้น (เนื่องจากรหัสวัตถุเพิ่มเติมโหลดลงในแอปพลิเคชัน) แต่จะช่วยให้การสร้างไลบรารีสแตติก Objective-C ที่สำเร็จมีประสิทธิภาพ

จากคำถาม & คำตอบทางเทคนิคนี้


2
ที่ดี! ขอบคุณ. สิ่งนี้เกิดจากข้อเท็จจริงที่ว่าเราใช้ GCC 4.2 เป็นคอมไพเลอร์หรือไม่? จะใช้ LLVM GCC 4.2 หรือ LLVM Compiler 2.0 เพื่อแก้ปัญหาหรือไม่ หรือฉันกำลังผสมสิ่งที่ไม่ควรสับสน
bsarrazin

ฉันคิดว่าพฤติกรรมเหมือนกันกับคอมไพเลอร์ทั้งสอง (นอกจากนี้ฉันไม่รู้ว่ามีลิงค์ลิงเกอร์ 2 อัน) ...
sergio

4
หมายความว่าคุณไม่ต้องการ-ObjCสิ่งใดนอกจากห้องสมุด / SDK หรือไม่? คือคุณไม่จำเป็นต้องใช้มันในเป้าหมายแอพจริง ๆ เหรอ?
Robert

2
ไม่นี่หมายความว่าคุณต้องการ -ObjC ในโครงการใด ๆ ที่ใช้ไลบรารีที่มีหมวดหมู่หรือกรอบงานฝังอยู่ในนั้น
arc4randall

เพิ่งพบสิ่งนี้ด้วยวิธีที่ยาก!
Alexandre G
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.