Index
A
- @autoclosure attribute / Applying the @autoclosure and @noescape attributes, @autoclosure, @autoclosure (escaping)
- Accelerate
- URL / Accelerate and Surge
- about / Accelerate and Surge
- application architecture
- achieving / Divide and conquer
- concurrent code execution / Divide and conquer
- component with single responsibility, identifying / Divide and conquer
- comporelations and communication, building / Divide and conquer
- ARC / Memory allocation
- arrays
- about / Arrays
- using / Using arrays
- fast operations / Fast operations
- elements, accessing / Fast operations
- elements, appending / Fast operations
- slower operations / Slower operations
- search operation / Search
- sort operation / Sort
- AST (Abstract Syntax Tree) / The Swift compilation process and swiftc
- asynchronous code
- designing / Designing asynchronous code
C
- Clang's AST
- URL / Swift AST
- clean code, Swift features
- no semicolons / No semicolons
- type inference / Type inference
- clean closure syntax / Other clean code Swift features
- default parameter values / Other clean code Swift features
- external names / Other clean code Swift features
- default and memberwise initializers / Other clean code Swift features
- subscripts / Other clean code Swift features
- operators / Other clean code Swift features
- guard / Other clean code Swift features
- closed range operator
- about / Rich type system
- closure expression
- about / The closure expression
- type inference / Type inference
- implicit return type / Implicit return type
- shorthand argument names / Shorthand argument names
- closure syntax, trailing / Trailing closure syntax
- code, characteristics
- code quality / Performance – meaning and key metrics
- code performance / Performance – meaning and key metrics
- code performance
- about / Everyday code performance
- collections
- about / Other collections, Sequences and collections, Collections
- implementing / Implementing our own sequence and collection
- collections memory allocation
- about / Collection memory allocation
- empty / Empty
- reserve capacity / Reserve capacity
- default values / Default values
- collections type
- about / Collection types
- CollectionType protocol methods
- about / The CollectionType protocol methods
- protocol extensions / Protocol extensions
- concurrency
- overview / Concurrency overview
- threads / Threads
- GCD / GCD
- operation queues / Operation queues
- Concurrency Programming Guide
- URL / Asynchronous dispatch
- concurrent queue / Concurrent queues
- console logs
- about / Console logs
- print function / Console logs
- debugPrint function / Console logs
- constants
- differentiating, with variables / The differences between variables and constants
- about / Constants and variables
- C pointers
D
- dangerous functions
- about / Dangerous functions
- console print / Console print
- print logs, removing / Removing print logs
- dangerous operations
- about / Dangerous operations
- implicitly unwrapping optionals / Dangerous operations
- type casting / Dangerous operations
- unsafe types and operations / Dangerous operations
- arrays’ elements, accessing / Dangerous operations
- data structures
- about / An overview of data structures
- data types, Swift
- reference types / Value types and immutability
- value types / Value types
- dictionaries
- about / Dictionaries
- didFinishLaunchingWithOptions method / LLDB
- dynamic keyword
- applying, issues / Dynamic
E
- equatable protocol / Sets
- executable files
- analyzing / Analyzing executable files
- explicit performance optimization / Explicit
F
- features, Swift
- about / Swift's features and benefits
- clean code / Clean and beautiful, Type inference, Other clean code Swift features, A clean code summary
- safe / Safe
- reach type system / Rich type system
- powerful value types / Powerful value types
- powerful value types, advantages / Powerful value types
- multiparadigm language / A multiparadigm language
- fast / Fast
- filter function / Functional
- first class function / Functional
- folder structure, playgrounds
- about / The folder structure
- source / The folder structure
- XCPlayground / XCPlayground
- functional programming
- about / Functional programming
- function types / Function types
- code, splitting / Splitting the code
- closure expression / The closure expression
- standard library / The standard library
- URL / The filter method
- functions and methods
- creating, ways / Functions and methods
- global functions / Global functions
- type methods / Type methods
- static method / Static methods
- instance method / Instance methods
- function speed, comparing / Comparing function speed
- usage summary / Functions and methods usage summary
G
- GCD
- about / GCD
- queues / Queues
- tasks / Tasks
- tasks, adding to queue / Adding tasks to the queue
- generics / Generic purpose
- about / Generics
- functions / Generic functions
- type constraints / Type constraints
- generic type / The generic type and collections
- collections / The generic type and collections
H
- half-open range operator
- about / Rich type system
- hashable protocol / Sets
- high performance
- achieving / Achieving high performance
- device architecture / Device architecture
- Hopper
I
- immutability
- about / Immutability
- advantages / Immutability
- multithreading / Multithreading
- implicit performance optimization / Implicit
- instruments
- about / Instruments
- URL / Instruments
- intelligent code
- about / Intelligent code
- dangerous functions / Dangerous functions
- nonoptimizable constants, using / Using nonoptimizable constants
- Intermediate Representation (IR) / LLVM IR
K
- key metrics
L
- lazy collection
- using / Using a lazy collection
- lazy collections
- about / Lazy collections and evaluation
- lazy evaluation
- about / Lazy collections and evaluation
- lazy loading pattern
- about / Lazy loading
- global constants / Global constants and variables
- global variables / Global constants and variables
- type properties / Type properties
- lazy properties / Lazy properties
- computed properties / Computed properties
- lazy pattern
- about / The lazy mindset
- code, separating / Separation
- work on demand / Do work on demand
- approximate results / Approximate results
- lazy property
- using / Using lazy
- lazy sequence
- using / Using the lazy sequence
- lifetime
- controlling / Controlling the lifetime
- @autoclosure attribute, applying / Applying the @autoclosure and @noescape attributes
- @noescape attribute, applying / Applying the @autoclosure and @noescape attributes
- @autoclosure attribute / @autoclosure, @autoclosure (escaping)
- @noescape keyword / @noescape
- LLDB
- LLVM IR
M
- main queue / Main queues
- map method, standard library
- about / The map method
- map for optionals / map for optionals
- Markdown
- syntax / Interactive documentation
- URL / Interactive documentation
- measureBlock function / Performance measuring in unit tests
- message sending / Method calls
- method calls
- about / Method calls
- static / Method calls
- dynamic / Method calls
- functions and methods / Functions and methods
- multiparadigm language
- about / A multiparadigm language
- object oriented / Object oriented
- protocol oriented / Protocol oriented
- functional / Functional
- generic purpose / Generic purpose
N
- @noescape attributes / Applying the @autoclosure and @noescape attributes
- @noescape keyword / @noescape
- name mangling
- reference link / SIL
- name shadowing / Using optionals
- non-optional types
- about / Optional and non-optional types
- nothing method / Intelligent code
O
- Objective-C
- using, in Swift / Using Objective-C in Swift
- using / Calling Objective-C code
- Swift, using in / Using Swift in Objective-C
- avoiding / Avoiding Objective-C
- Swift exposure, avoiding / Avoiding exposing Swift to Objective-C
- dynamic keyword / Dynamic
- avoiding, summary / A summary of avoiding Objective-C
- operations perform speed
- about / The key metrics
- optionals
- used, for representing absence of values / Representing the absence of values with optionals
- about / Optional and non-optional types
- using / Using optionals
- wrapping up / Wrapping up on optionals
- optional type
- about / Optionals
P
- performance
- about / Performance – meaning and key metrics
- importance / The importance of performance
- performance optimization
- about / Understanding performance optimization
- types / Understanding performance optimization
- explicit / Explicit
- implicit / Implicit
- checklist / Optimization checklist
- performance optimization checklist
- steps / Optimization checklist
- playgrounds
- about / Playgrounds, Interactive documentation
- editor / Playgrounds
- result / Playgrounds
- Quick Look / Playgrounds
- Show / Hide Result / Playgrounds
- interactive documentation / Interactive documentation
- folder structure / The folder structure
- pointer
- creating, from existing variable / Creating a pointer to an existing variable
- memory, allocating for / Allocating memory for the pointer
- working with / A summary of working with pointers
- print logs
- removing / Removing print logs
- comment out / Comment out
- build configurations, using / Using build configurations
- Project Navigator
- resources folder / The folder structure, Resources, Pages
- pages / The folder structure
- source folder / The source folder
- protocol extensions
- reference link / Protocol extensions
- Pyramid of Doom
Q
- queues
- about / Queues
- main queue / Main queues
- concurrent queue / Concurrent queues
- own queue / Own queues
R
- range
- about / Rich type system
- reference objects
- about / Value objects and reference objects
- memory allocation / Memory allocation
- reference types
- about / Reference types
- release mode
- setting / A reminder
- REPL
- about / REPL
- in Xcode / REPL in Xcode
- Enter REPL command / REPL in Xcode
- Exit REPL command / REPL in Xcode
- Execute the LLDB command in REPL / REPL in Xcode
- required setup, Objective-C
- about / Setup
- application target / The application target
- framework target / The framework target
S
- safe, Swift features
- optional type / Optionals
- error handling / Error handling
- safe nil handling
- about / Safe nil handling
- safety
- about / Safety
- type safety / Safety
- variable, initializing / Safety
- safe nil handling / Safety
- dangerous operations / Dangerous operations
- sequences
- about / Sequences
- implementing / Implementing our own sequence and collection
- set operations
- about / Set operations
- sets
- about / Sets
- using / Using sets
- SIL
- single responsibility pattern
- about / Separation
- speed
- improving / Improving speed
- final attribute, using / Final
- inline functions / Inline functions
- standard library
- about / The standard library
- map method / The map method
- reduce method / The reduce method
- filter method / The filter method
- standard library collections
- about / Swift standard library collections
- arrays / Arrays
- sets / Sets
- dictionaries / Dictionaries
- state
- avoiding / Avoiding state
- capture list / Capture list
- immutable state / Immutable state
- structures / Rich type system
- Surge
- about / Accelerate and Surge
- URL / Accelerate and Surge
- Swift
- speed / Swift speed, How Swift is so fast
- about / Welcome to Swift
- reasons, for learning / Why should I learn Swift?
- features / Swift's features and benefits
- benefits / Swift's features and benefits
- Objective-C, using in / Using Objective-C in Swift
- using, in Objective-C / Using Swift in Objective-C
- features, not available in Objective-C / Features of Swift that are not available in Objective-C
- complexity controlling, URL / Representing the state with classes
- tools / Swift command line tools
- compilation process / The Swift compilation process and swiftc
- Swift application
- creating / Making a Swift application
- Swift arrays
- about / Swift arrays and unsafe C arrays
- function parameters / Function parameters
- pointer, creating to existing variable / Creating a pointer to an existing variable
- memory, allocating for pointer / Allocating memory for the pointer
- comparing, with unsafe C arrays / Comparing Swift arrays with unsafe C arrays
- pointers, working with / A summary of working with pointers
- Swift AST
- about / Swift AST
- swiftc compiler
- about / swiftc, The Swift compilation process and swiftc
- options / Other swiftc options
- Swift code
- compilation / Swift code compilation
- Swift compiler
- Swift interoperability
- about / Swift interoperability
- swift tool
- about / swift
T
- @testability
- enabling / Performance measuring in unit tests
- task / Tasks
- tasks, adding to queues
- about / Adding tasks to the queue
- synchronous / Adding tasks to the queue, Synchronous dispatch
- asynchronous / Adding tasks to the queue, Asynchronous dispatch
- testing, Xcode
- text styles, playgrounds
- multiline / Interactive documentation
- threads
- about / Threads
- complexity / Thread complexity
- solutions / Solution for threads
- tuples / Rich type system
- type inference
- about / Type inference
- types, Swift
- structures / Rich type system
- tuples / Rich type system
- range / Rich type system
- enumeration / Rich type system
U
- unit tests
- performance, measuring / Performance measuring in unit tests
- unsafe C arrays
- about / Swift arrays and unsafe C arrays
- Swift Arrays, comparing with / Comparing Swift arrays with unsafe C arrays
- UnsafePointers
- use scenarios / Swift arrays and unsafe C arrays
V
- value objects
- about / Value objects and reference objects
- memory allocation / Memory allocation
- value types
- about / Value types
- structures / The power of structures
- state, representing with classes / Representing the state with classes
- variables
- differentiating, with constants / The differences between variables and constants
- about / Constants and variables
X
- Xcode
- REPL / REPL in Xcode
- XCPlayground
- about / XCPlayground
- XCPCaptureValue / XCPlayground
- XCPShowView / XCPlayground
- XCPSetExecutionShouldContinueIndefinitely / XCPlayground
- XCPSharedDataDirectoryPath / XCPlayground
- xcrun
- about / xcrun