- 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
Using JavaScript code from native code without using a WebView (sic!) can be really useful to introduce dynamic functionality that was updatable without need of updating the app shorter iteration cycles share code between backend and native iOS and Android apps You can have business logic provided by a JavaScript that then controls the app that inject native functionality in the JavaScript context. You could even write an A/B testing framework based on this approach. iOS iOS offers the native JavaScriptCore: Evaluate JavaScript programs from within an app, and support JavaScript scripting of your app. So you can evaluate a script and read its return value natively: context.evaluateScript(myLib); let result = context.evaluateScript("myFunction();") let myFunction = context.objectForKeyedSubscription("myFunction"); let parametrizedResult = myFunction.invokeMethod(...) Or you can inject a native object into the JavaScript engine: @objc protoco...
Comments
Post a Comment