- Enabling Optimizations
- Whole Module Optimizations (WMO)
- Reducing Dynamic Dispatch
- Dynamic Dispatch
- Advice: Use 'final' when you know the declaration does not need to be overridden
- Advice: Use 'private' and 'fileprivate' when declaration does not need to be accessed outside of file
- Advice: If WMO is enabled, use 'internal' when a declaration does not need to be accessed outside of module
- Using Container Types Efficiently
- Advice: Use value types in Array
- Advice: Use ContiguousArray with reference types when NSArray bridging is unnecessary
- Advice: Use inplace mutation instead of object-reassignment
- Wrapping operations
- Advice: Use wrapping integer arithmetic when you can prove that overflow cannot occur
- Generics
- Advice: Put generic declarations in the same module where they are used
- The cost of large Swift values
- Advice: Use copy-on-write semantics for large values
- Unsafe code
- Advice: Use unmanaged references to avoid reference counting overhead
- Protocols
- Advice: Mark protocols that are only satisfied by classes as class-protocols
- The Cost of Let/Var when Captured by Escaping Closures
- Advice: Pass var as an inout if closure not actually escaping
- Unsupported Optimization Attributes
Automatic Reference Counting (ARC) largely removes the burden of manual memory management, not to mention the chore of tracking down bugs caused by leaking or over-released objects! Despite its awesomeness, ARC does not let you ignore memory management altogether. This post covers the following key aspects of ARC to help you get up and running quickly. Reference Counted Memory: Quick Revision How Automatic Reference Counting Works Enabling ARC in Your Project New Rules Enforced by ARC ARC Qualifiers – Declared Properties ARC Qualifiers – Regular Variables Migrating Existing Projects to ARC Including Code that is not ARC Compliant Should I Use ARC? The Long Weekend Website
Comments
Post a Comment