> On Jan 5, 2016, at 9:06 PM, Félix Cloutier <[email protected]> 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
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution