> On Jan 5, 2016, at 9:06 PM, Félix Cloutier <felix...@yahoo.ca> wrote:
> 
> The linker is smart enough to get rid of frameworks that you don't actually 
> use.
> 
> Félix


objc_copyClassList leaves a value of 14694 in classCount. When I just link 
against Foundation it only gives 1581.

otool says:

$ otool -L test
test:
        /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 
120.1.0)
        /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation 
(compatibility version 300.0.0, current version 1256.1.0)
        /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork 
(compatibility version 1.0.0, current version 760.2.5)
        /System/Library/Frameworks/Metal.framework/Versions/A/Metal 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/Contacts.framework/Versions/A/Contacts 
(compatibility version 0.0.0, current version 0.0.0)
        /System/Library/Frameworks/GSS.framework/Versions/A/GSS (compatibility 
version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/CoreMIDIServer.framework/Versions/A/CoreMIDIServer 
(compatibility version 1.0.0, current version 73.0.0)
        /System/Library/Frameworks/Python.framework/Versions/2.7/Python 
(compatibility version 2.7.0, current version 2.7.10)
        
/System/Library/Frameworks/CoreLocation.framework/Versions/A/CoreLocation 
(compatibility version 1.0.0, current version 1615.38.0)
        /System/Library/Frameworks/GLKit.framework/Versions/A/GLKit 
(compatibility version 1.0.0, current version 20.0.0)
        /System/Library/Frameworks/MapKit.framework/Versions/A/MapKit 
(compatibility version 1.0.0, current version 0.0.0)
        
/System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
 (compatibility version 1.0.0, current version 756.20.4)
        
/System/Library/Frameworks/CoreTelephony.framework/Versions/A/CoreTelephony 
(compatibility version 1.0.0, current version 0.0.0)
        /System/Library/Frameworks/CloudKit.framework/Versions/A/CloudKit 
(compatibility version 1.0.0, current version 481.8.0)
        /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/Collaboration.framework/Versions/A/Collaboration 
(compatibility version 1.0.0, current version 75.0.0)
        /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP 
(compatibility version 1.0.0, current version 2.4.0)
        /System/Library/Frameworks/AddressBook.framework/Versions/A/AddressBook 
(compatibility version 1.0.0, current version 1679.3.0)
        /System/Library/Frameworks/QuickLook.framework/Versions/A/QuickLook 
(compatibility version 1.0.0, current version 0.0.0)
        
/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/Tcl.framework/Versions/8.5/Tcl 
(compatibility version 8.5.0, current version 8.5.9)
        
/System/Library/Frameworks/DiscRecording.framework/Versions/A/DiscRecording 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/InputMethodKit.framework/Versions/A/InputMethodKit 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/Photos.framework/Versions/A/Photos 
(compatibility version 1.0.0, current version 350.22.0)
        /System/Library/Frameworks/OSAKit.framework/Versions/A/OSAKit 
(compatibility version 1.0.0, current version 104.0.0)
        
/System/Library/Frameworks/MediaAccessibility.framework/Versions/A/MediaAccessibility
 (compatibility version 1.0.0, current version 62.0.0)
        /System/Library/Frameworks/ContactsUI.framework/Versions/A/ContactsUI 
(compatibility version 1.0.0, current version 1679.3.0)
        
/System/Library/Frameworks/DirectoryService.framework/Versions/A/DirectoryService
 (compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility 
version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/StoreKit.framework/Versions/A/StoreKit 
(compatibility version 1.0.0, current version 379.0.0)
        
/System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/PreferencePanes.framework/Versions/A/PreferencePanes 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/GameplayKit.framework/Versions/A/GameplayKit 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/SyncServices.framework/Versions/A/SyncServices 
(compatibility version 48.0.0, current version 724.0.0)
        /System/Library/Frameworks/AVKit.framework/Versions/A/AVKit 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/GLUT.framework/Versions/A/GLUT 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/ModelIO.framework/Versions/A/ModelIO 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/GameController.framework/Versions/A/GameController 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk (compatibility 
version 8.5.0, current version 8.5.9)
        
/System/Library/Frameworks/AppleScriptObjC.framework/Versions/A/AppleScriptObjC 
(compatibility version 1.0.0, current version 32.0.0)
        /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit 
(compatibility version 45.0.0, current version 1404.32.0)
        
/System/Library/Frameworks/InstallerPlugins.framework/Versions/A/InstallerPlugins
 (compatibility version 1.0.0, current version 815.0.0)
        
/System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
 (compatibility version 1.0.0, current version 55126.0.0)
        
/System/Library/Frameworks/ImageCaptureCore.framework/Versions/A/ImageCaptureCore
 (compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/VideoDecodeAcceleration.framework/Versions/A/VideoDecodeAcceleration
 (compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics 
(compatibility version 64.0.0, current version 600.0.0)
        /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos 
(compatibility version 5.0.0, current version 6.0.0)
        /System/Library/Frameworks/vmnet.framework/Versions/A/vmnet 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/Quartz.framework/Versions/A/Quartz 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData 
(compatibility version 1.0.0, current version 641.3.0)
        
/System/Library/Frameworks/IMServicePlugIn.framework/Versions/A/IMServicePlugIn 
(compatibility version 1.0.0, current version 1000.0.0)
        
/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/JavaScriptCore 
(compatibility version 1.0.0, current version 601.3.7)
        
/System/Library/Frameworks/NotificationCenter.framework/Versions/A/NotificationCenter
 (compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/LocalAuthentication.framework/Versions/A/LocalAuthentication
 (compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/GameKit.framework/Versions/A/GameKit 
(compatibility version 1.0.0, current version 365.103.0)
        /System/Library/Frameworks/PubSub.framework/Versions/A/PubSub 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/CoreMediaIO 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/Social.framework/Versions/A/Social 
(compatibility version 1.0.0, current version 538.0.0)
        
/System/Library/Frameworks/MultipeerConnectivity.framework/Versions/A/MultipeerConnectivity
 (compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo 
(compatibility version 1.2.0, current version 1.5.0)
        /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit 
(compatibility version 1.0.0, current version 275.0.0)
        /System/Library/Frameworks/QTKit.framework/Versions/A/QTKit 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
 (compatibility version 1.0.0, current version 48.0.0)
        
/System/Library/Frameworks/NetworkExtension.framework/Versions/A/NetworkExtension
 (compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/PCSC.framework/Versions/A/PCSC 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/ExceptionHandling.framework/Versions/A/ExceptionHandling
 (compatibility version 1.0.0, current version 11.0.0)
        /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon 
(compatibility version 2.0.0, current version 157.0.0)
        /System/Library/Frameworks/Security.framework/Versions/A/Security 
(compatibility version 1.0.0, current version 57337.20.43)
        
/System/Library/Frameworks/AppleScriptKit.framework/Versions/A/AppleScriptKit 
(compatibility version 1.0.0, current version 83.0.0)
        
/System/Library/Frameworks/LatentSemanticMapping.framework/Versions/A/LatentSemanticMapping
 (compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib
 (compatibility version 2.0.0, current version 2.0.0)
        
/System/Library/Frameworks/InstantMessage.framework/Versions/A/InstantMessage 
(compatibility version 1.0.0, current version 800.0.0)
        
/System/Library/Frameworks/AudioVideoBridging.framework/Versions/A/AudioVideoBridging
 (compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage 
(compatibility version 1.0.1, current version 2.0.0)
        /System/Library/Frameworks/Automator.framework/Versions/A/Automator 
(compatibility version 1.0.0, current version 0.0.0)
        /System/Library/Frameworks/MetalKit.framework/Versions/A/MetalKit 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/Hypervisor.framework/Versions/A/Hypervisor 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/SceneKit.framework/Versions/A/SceneKit 
(compatibility version 1.0.0, current version 186.0.0)
        /System/Library/Frameworks/OpenAL.framework/Versions/A/OpenAL 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/EventKit.framework/Versions/A/EventKit 
(compatibility version 1.0.0, current version 487.3.0)
        
/System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/IOBluetoothUI.framework/Versions/A/IOBluetoothUI 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/CalendarStore.framework/Versions/A/CalendarStore 
(compatibility version 1.0.0, current version 1501.0.0)
        /System/Library/Frameworks/SpriteKit.framework/Versions/A/SpriteKit 
(compatibility version 1.0.0, current version 2.0.0)
        
/System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox 
(compatibility version 1.0.0, current version 492.0.0)
        
/System/Library/Frameworks/ForceFeedback.framework/Versions/A/ForceFeedback 
(compatibility version 1.0.0, current version 1.0.2)
        /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS 
(compatibility version 1.0.0, current version 1.0.0)
        @rpath/FinderSync.framework/Versions/A/FinderSync (compatibility 
version 1.0.0, current version 960.2.6)
        /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit 
(compatibility version 1.0.0, current version 601.3.9)
        /System/Library/Frameworks/TWAIN.framework/Versions/A/TWAIN 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/SecurityInterface.framework/Versions/A/SecurityInterface
 (compatibility version 1.0.0, current version 55065.20.1)
        /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/CoreMIDI.framework/Versions/A/CoreMIDI 
(compatibility version 1.0.0, current version 73.0.0)
        /System/Library/Frameworks/ICADevices.framework/Versions/A/ICADevices 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/MediaToolbox.framework/Versions/A/MediaToolbox 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/CoreAudioKit.framework/Versions/A/CoreAudioKit 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/Accounts.framework/Versions/A/Accounts 
(compatibility version 1.0.0, current version 0.0.0)
        /System/Library/Frameworks/PhotosUI.framework/Versions/A/PhotosUI 
(compatibility version 1.0.0, current version 350.22.0)
        /System/Library/Frameworks/DVDPlayback.framework/Versions/A/DVDPlayback 
(compatibility version 5000.0.0, current version 5950.0.0)
        
/System/Library/Frameworks/DiscRecordingUI.framework/Versions/A/DiscRecordingUI 
(compatibility version 1.0.0, current version 1.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current 
version 1226.10.1)
        
/System/Library/Frameworks/ScriptingBridge.framework/Versions/A/ScriptingBridge 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/CryptoTokenKit.framework/Versions/A/CryptoTokenKit 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/ScreenSaver.framework/Versions/A/ScreenSaver 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa 
(compatibility version 1.0.0, current version 22.0.0)
        /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore 
(compatibility version 1.2.0, current version 1.11.0)
        /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices 
(compatibility version 1.0.0, current version 728.6.0)
        
/System/Library/Frameworks/MediaLibrary.framework/Versions/A/MediaLibrary 
(compatibility version 1.0.0, current version 721.0.0)
        
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 
(compatibility version 150.0.0, current version 1256.14.0)
        /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate 
(compatibility version 1.0.0, current version 4.0.0)
        
/System/Library/Frameworks/AVFoundation.framework/Versions/A/AVFoundation 
(compatibility version 1.0.0, current version 2.0.0)
        /System/Library/Frameworks/FWAUserLib.framework/Versions/A/FWAUserLib 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit 
(compatibility version 1.0.0, current version 1.0.0)
        /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface 
(compatibility version 1.0.0, current version 1.0.0)
        
/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
 (compatibility version 1.0.0, current version 802.20.7)
        /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth 
(compatibility version 1.0.0, current version 1.0.0)
        /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 
228.0.0)

I don't think the optimization you describe is possible with Objective-C due to 
the dynamic nature of the runtime. The linker has no way of knowing that a 
class won’t be accessed via NSClassFromString(), or from a nib file or 
something.

Charles

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to