2013-10-15 20 views
9

Với Xcode 4 và iOS 6 SDK để sử dụng các lớp trong QuartzCore.framework bạn phải liên kết với QuartzCore.framework và #import <QuartzCore/QuartzCore.h>. Điều này là tốt và nó có ý nghĩa. Tôi đã hài lòng với quan điểm của tôi về thế giới :)Làm cách nào để bạn theo dõi lại nguồn của khung được nhập?

Trong Xcode 5 với iOS 7 SDK, tiêu đề QuartzCore dường như được nhập tự động. Việc sử dụng các lớp CA sẽ không gây ra cảnh báo hoặc lỗi liên kết.

Câu hỏi của tôi là thế này:

Cho rằng những tiêu đề rõ ràng là được nhập khẩu từ đâu đó và thư viện đang được liên kết, làm thế nào để theo dõi nguồn gốc của việc nhập khẩu và khuôn khổ liên kết? Điều này chỉ dành cho sự tò mò của tôi và hiểu thêm về quá trình này hơn là giải quyết một vấn đề cụ thể.

Thông tin bổ sung:

  • Modules được bật (mặc định trong Xcode 5) nhưng @import không được sử dụng trong bất kỳ mã. Tuy nhiên, việc chuyển đổi Enable Modules (C and Objective-C)Link Frameworks Automatically cả hai thành "Không" dường như không yêu cầu #import của QuartzCore để biên dịch.
  • Khi mô-đun được tắt, xem Sản phẩm | Thực hiện hành động | Preprocess hiển thị tiêu đề QuartzCore trong đầu ra được xử lý trước. Điều này giải thích tại sao mã biên dịch, nhưng không giải thích được mã nguồn ở đâu.
  • otool thấy không có gì trong những khuôn khổ QuartzCore trong sản lượng của nó:

    $ otool -L Test 
    Test: 
        /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (compatibility version 64.0.0, current version 600.0.0) 
        /System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 2903.2.0) 
        /System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 1047.20.0) 
        /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0) 
        /usr/lib/libSystem.dylib (compatibility version 1.0.0, current version 111.0.0) 
    

Chỉnh sửa với một giải pháp phần

  • tôi đã tìm ra nguồn gốc của #import ít nhất. Kiểm tra thông qua các tiêu đề UIKit của iOS 7, UISlider hiện bao gồm một nhập khẩu <QuartzCore/QuartzCore.h> mà không có trong iOS 6. Bí ẩn một giải quyết, nhưng thiếu các lỗi liên kết vẫn còn tò mò.
+0

Có thể với việc nhập cho 'UISlider', tất cả' QuartzCore' hiện được liên kết thành 'UIKit'? Tôi đang tìm kiếm các khung công tác và 'QuartzCore' là 6,7MB trong khi' UIKit' là 40,4MB! Tôi nghi ngờ rằng Apple có thể đã cho phép cho một sự giám sát rất lớn, và tôi không biết những gì các kích thước cho 'iPhoneOS6.0SDK'. Ngoài ra, tôi đã có nhiều lỗi liên kết định nghĩa trong quá khứ và tôi đoán rằng có lẽ sẽ xảy ra nếu đây là trường hợp. –

+2

P.S. Tôi yêu e-mail hàng tuần của bạn. Bạn đá! –

+0

Dòng lệnh của trình liên kết trông như thế nào? – petert

Trả lời

2

Có vẻ như nó đang được liên kết bởi UIKit, có thể với LC_REEXPORT_DYLIB.

Thông tin thêm về chủ đề này Twitter: https://twitter.com/daveverwer/status/390060215221354496

Chạy otool trên UIKit.framework cho thấy rằng nó được liên kết.

$ otool -L UIKit 
UIKit: 
    /System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 2380.17.0) 
    /System/Library/PrivateFrameworks/UIFoundation.framework/UIFoundation (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/Frameworks/CoreVideo.framework/CoreVideo (compatibility version 1.2.0, current version 1.8.0) 
    /System/Library/Frameworks/VideoToolbox.framework/VideoToolbox (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/PrivateFrameworks/MobileAsset.framework/MobileAsset (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/PrivateFrameworks/TelephonyUtilities.framework/TelephonyUtilities (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/PrivateFrameworks/WebBookmarks.framework/WebBookmarks (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/PrivateFrameworks/BackBoardServices.framework/BackBoardServices (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/PrivateFrameworks/XPCObjects.framework/XPCObjects (compatibility version 1.0.0, current version 1.0.0) 
    /usr/lib/libicucore.A.dylib (compatibility version 1.0.0, current version 49.1.0) 
    /System/Library/Frameworks/CoreImage.framework/CoreImage (compatibility version 1.0.0, current version 2.0.0) 
    /System/Library/Frameworks/Security.framework/Security (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/PrivateFrameworks/DictionaryServices.framework/DictionaryServices (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 993.0.0) 
    /System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices (compatibility version 1.0.0, current version 14.0.0) 
    /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (compatibility version 64.0.0, current version 600.0.0) 
    /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation (compatibility version 150.0.0, current version 793.0.0) 
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0) 
    /System/Library/Frameworks/ImageIO.framework/ImageIO (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/Frameworks/QuartzCore.framework/QuartzCore (compatibility version 1.2.0, current version 1.8.0) 
    /System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/PrivateFrameworks/AppSupport.framework/AppSupport (compatibility version 1.0.0, current version 29.0.0) 
    /System/Library/Frameworks/CoreText.framework/CoreText (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices (compatibility version 1.0.0, current version 40.0.0) 
    /usr/lib/libsqlite3.dylib (compatibility version 9.0.0, current version 9.6.0) 
    /System/Library/PrivateFrameworks/WebKit.framework/WebKit (compatibility version 1.0.0, current version 536.26.0) 
    /System/Library/PrivateFrameworks/WebCore.framework/WebCore (compatibility version 1.0.0, current version 536.26.0) 
    /System/Library/PrivateFrameworks/ProofReader.framework/ProofReader (compatibility version 1.0.0, current version 180.0.0) 
    /System/Library/Frameworks/CFNetwork.framework/CFNetwork (compatibility version 1.0.0, current version 609.1.4) 
    /usr/lib/libAccessibility.dylib (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/Frameworks/Accelerate.framework/Accelerate (compatibility version 1.0.0, current version 4.0.0) 
    /System/Library/PrivateFrameworks/PrintKit.framework/PrintKit (compatibility version 1.0.0, current version 109.2.0) 
    /usr/lib/libMobileGestalt.dylib (compatibility version 1.0.0, current version 1.0.0) 
    /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0) 
    /usr/lib/libSystem.dylib (compatibility version 1.0.0, current version 125.0.0) 
Các vấn đề liên quan