Index
A
- abstract factory pattern
- about / Abstract factory
- access controls
- about / Access control
- private / Access control
- internal / Access control
- public / Access control
- annotations, Objective-C
- about / Annotations
- nullability / Nullability
- container element types / Container element types
- app
- conceptualizing / Conceptualizing the app
- features / Features
- interface / Interface
- data / Data
- running / Running the app
- refactoring, to respect model-view-controller / Refactoring to respect model-view-controller
- Apple
- documentation / Apple's documentation
- app project
- setting up / Setting up the app project
- arrays
- about / Arrays
- associated values / Associated values
- using / Using associated values effectively
- class hierarchies, replacing / Replacing class hierarchies
- state, representing / Concisely representing state
- Auto Layout / Configuring the user interface
- automatic reference counting
- about / Automatic reference counting
- object relationships / Object relationships
B
- bar button items / Configuring the user interface
- basic functions
- about / Basic functions
- behavioral patterns
- about / Behavioral patterns
- iterator pattern / Iterator
- observer pattern / Observer
- blog posts
- about / Blog posts
- blogs
- about / Forums and blogs
- bridging header / Bridging header
- building blocks
- implementing / Bringing it all together
- building blocks, functional programming
- about / Building blocks of functional programming in Swift
- filter / Filter
- reduce / Reduce
- map / Map
- sorted / Sort
- for avoiding state / How these affect the state and nature of code
C
- capture lists / Closure capture behavior
- case
- about / Switches
- casting
- about / Casting
- upcasting / Upcasting
- downcasting / Downcasting
- class
- about / Classes
- inheriting, from another class / Inheriting from another class
- initialization / Initialization
- methods and computed properties, overriding / Overriding methods and computed properties
- casting / Casting
- classes, Objective-C
- about / Classes
- basic class / Basic class
- initializers / Initializers
- properties / Properties
- methods / Methods
- inheritance / Inheritance
- closed range
- about / Loops
- closures
- about / Closures
- as variables / Closures as variables
- as parameters / Closures as parameters
- syntactic sugar / Syntactic sugar
- cohesion
- about / What is a design pattern?
- collection types
- tuples / Tuples
- arrays / Arrays
- dictionaries / Dictionaries
- collection view cell / Configuring the user interface
- command-line tool / Projects
- compiler
- about / Understanding playgrounds
- complexity
- about / What is a design pattern?
- composite pattern
- about / Composite
- hierarchies / Hierarchies
- alternative to subclassing / Alternative to subclassing
- computed properties / Computed properties
- overriding / Computed properties
- computer data storage
- about / Computer data storage
- file system / File system
- memory / Memory
- conditionals
- about / Conditionals
- console
- printing to / Printing to the console
- constants
- about / Constants and variables
- containers
- about / Containers
- containers, Objective-C
- about / Containers
- arrays / Arrays
- dictionaries / Dictionaries
- control flow
- about / Control flow
- conditionals / Conditionals
- switches / Switches
- loops / Loops
- control flow, Objective-C
- about / Control flow
- conditionals / Conditionals
- switches / Switches
- loops / Loops
- convenience initializers
- core Swift types
- about / Core Swift types
- constants / Constants and variables
- variables / Constants and variables
- containers / Containers
- coupling
- about / What is a design pattern?
- creational patterns
- about / Creational patterns
- singleton/shared instance / Singleton/shared instance
- abstract factory / Abstract factory
D
- declarative / Declarative versus imperative code
- default arguments
- about / Functions with default arguments
- defer block / Deferring execution
- delegate pattern
- about / Delegate
- designated initializers
- design patterns
- about / What is a design pattern?
- behavioral / Behavioral patterns
- structural / Structural patterns
- creational / Creational patterns
- development environment
- setting up / Setting up the development environment
- dictionaries
- about / Dictionaries
- downcasting
- about / Casting, Downcasting
E
- enumeration
- about / Enumerations
- basic declaration / Basic declaration
- values, testing / Testing enumeration values
- raw values / Raw values
- associated values / Associated values
- methods and properties / Methods and properties
- error handling
- about / Handling errors
- forceful try / Forceful try
- optional try / Optional try
- error, catching / Catching an error
- errors, propagating / Propagating errors
- errors, throwing
- about / Throwing errors
- error type, defining / Defining an error type
- function that throws error, defining / Defining a function that throws an error
- function that throws error, implementing / Implementing a function that throws an error
- error situations, cleaning
- about / Cleaning up in error situations
- order of execution when errors occur / Order of execution when errors occur
- deferring execution / Deferring execution
- existing generics, extending
- about / Extending generics
- methods, adding to all forms of generic / Adding methods to all forms of a generic
- methods, adding to certain instances of generic / Adding methods to only certain instances of a generic
- protocols, extending / Extending protocols
- extensions
- about / Extensions
- external name
- about / Functions that return values
F
- factory
- about / Abstract factory
- forced unwrapping
- about / Optional binding, Forced unwrapping
- forums
- about / Forums and blogs, Forums
- reference / Forums
- functional programming
- about / Functional programming philosophy
- state / State and side effects
- side effects / State and side effects
- stateless function / State and side effects
- declarative, versus imperative code / Declarative versus imperative code
- building blocks / Building blocks of functional programming in Swift
- functions
- about / Functions
- basic functions / Basic functions
- parameterized functions / Parameterized functions
- that return values / Functions that return values
- with default arguments / Functions with default arguments
- guard statement / Guard statement
- functions, Objective-C
- about / Functions
- using / Using functions
- types, using / Using types
- containers / Containers
- annotations / Annotations
G
- generators
- about / Generators
- generic
- about / The underlying implementation
- generics
- about / Generics
- generic function / Generic function
- generic type / Generic type
- type constraints / Type constraints
- implementing / Putting protocols and generics to use
- getter / Computed properties
- GIF / Casting
- guard statement
- about / Guard statement
H
- half open range
- about / Loops
I
- imperative code / Declarative versus imperative code
- implicitly unwrapped optional
- about / Implicitly unwrapped optionals
- defining / Implicitly unwrapped optionals
- inheritance / Classes
- initializer / Types versus instances
- initializers
- about / Initialization
- overriding initializer / Overriding initializer
- required initializer / Required initializer
- designated initializers / Designated and convenience initializers
- convenience initializers / Designated and convenience initializers
- Instruments / Spotting
- Interface Builder / Configuring the user interface
- internal access level / Access control
- internal name
- about / Functions that return values
- iterator pattern
- about / Iterator
K
- keys
- about / Dictionaries
L
- lazy evaluation
- about / Lazy evaluation
- lazy properties
- about / Lazy properties
- unnecessary memory usage, avoiding / Avoiding unnecessary memory usage
- unnecessary processing, avoiding / Avoiding unnecessary processing
- logic to concerned property, localizing / Localizing logic to the concerned property
- Leaks / Spotting
- leaky abstraction / Access control
- learning process
- about / Learning with this book
- loops
- lost objects
- about / Lost objects
- between objects / Between objects
- with closures / With closures
M
- Mac App Store
- reference / Setting up the development environment
- member and static functions / Member and static methods
- member constants / Properties
- member variables / Properties
- methods
- overriding / Methods
- model view controller pattern
- about / Model view controller
- mutating method / Member and static methods
N
- named parameters
- about / Functions that return values
- navigation bar / Configuring the user interface
- nil coalescing operator
- about / Nil coalescing
O
- object-oriented programming
- example / Example
- Objective-C
- Swift's relationship / Swift's relationship to Objective-C
- background / Background of Objective-C
- constants / Constants and variables
- variables / Constants and variables
- value types / Value types
- reference types / Reference types
- containers / Containers
- control flow / Control flow
- functions / Functions
- type system / Types
- projects / Projects
- functions, using / Using functions
- Objective-C code
- calling, from Swift / Calling Objective-C code from Swift
- bridging header / Bridging header
- object relationships
- about / Object relationships
- strong / Strong
- weak / Weak
- unowned / Unowned
- observer pattern
- about / Observer
- callback / Callback
- notification center / Notification center
- optional
- about / Subscripts
- defining / Defining an optional
- unwrapping / Unwrapping an optional
- binding / Optional binding
- forced unwrapping / Forced unwrapping
- nil coalescing operator / Nil coalescing
- debugging / Debugging optionals
- optional chaining
- about / Optional chaining
- overriding initializer
- about / Overriding initializer
P
- parameterized functions
- about / Parameterized functions
- photo
- saving temporarily / Temporarily saving a photo
- saving permanently / Permanently saving a photo
- photo grid
- populating / Populating our photo grid
- picture taking
- allowing / Allowing picture taking
- playgrounds
- about / Understanding playgrounds
- podcasts
- product of Fibonacci numbers under 50
- calculating / Product of Fibonacci numbers under 50
- projects
- about / Projects
- command-line Xcode project, setting up / Setting up a command-line Xcode project
- external file, creating / Creating and using an external file
- external file, using / Creating and using an external file
- code, interfacing from other files / Interfacing with code from other files
- file organization / File organization and navigation
- navigation / File organization and navigation
- projects, Objective-C
- about / Projects
- header files / Header files
- implementation files / Implementation files
- organization / Organization
- prominent figures
- about / Prominent figures
- properties / Properties
- protocols
- about / Protocols
- defining / Defining a protocol
- implementing / Implementing a protocol, Putting protocols and generics to use
- type aliases, using / Using type aliases
R
- raw value / Raw values
- required initializer
- about / Required initializer
S
- scope
- about / Extensions, Scope
- defining / How scope is defined
- global scope / How scope is defined
- nested types / Nested types
- separation of concerns / Creating and using an external file
- sequences
- setter / Computed properties
- singleton/shared instance pattern
- about / Singleton/shared instance
- Size Inspector / Configuring the user interface
- static constant / Properties
- static methods / Member and static methods
- String Interpolation / Printing to the console
- String Literal
- about / Swift's type system
- strong reference cycle
- about / Strong reference cycles
- strong reference cycle, between objects
- about / Between objects
- spotting / Spotting
- fixing / Fixing
- strong reference cycle, with closures
- about / With closures
- spotting / Spotting
- fixing / Fixing
- structs
- about / Structs
- types, versus instances / Types versus instances
- properties / Properties
- member and static methods / Member and static methods
- computed properties / Computed properties
- property changes, reacting to / Reacting to property changes
- subscripts / Subscripts
- custom initialization / Custom initialization
- structural patterns
- about / Structural patterns
- composite pattern / Composite
- delegate pattern / Delegate
- model view controller / Model view controller
- structure
- about / Structs
- structures
- versus classes / Structures versus classes
- subclass / Inheriting from another class
- subscripts / Subscripts
- superclass / Inheriting from another class
- Swift
- about / Defining our goals for this book
- goals, defining / Defining our goals for this book
- swift code
- running / Running our first swift code
- switches
- about / Switches
- system types
- extending / Extending system types to reduce code
T
- tuples
- about / Tuples
- type aliases
- about / Using type aliases
- using / Using type aliases
- type constraints
- about / Type constraints
- protocol constraints / Protocol constraints
- where clauses, for protocols / Where clauses for protocols
- where clauses, for equality / Where clauses for equality
- Type Inference
- about / Swift's type system
- type system
- about / Swift's type system
- type system, Objective-C
- about / Types
- structures / Structures
- enumerations / Enumerations
- classes / Classes
- categories / Categories
- protocols / Protocols
- blocks / Blocks
U
- underlying implementation
- about / The underlying implementation
- upcasting
- user interface
- configuring / Configuring the user interface
V
- values
- about / Dictionaries
- value types, versus reference types
- about / Value types versus reference types
- value type, determining / Determining value type or reference type
- reference type, determining / Determining value type or reference type
- behavior on assignment / Behavior on assignment
- behavior on input / Behavior on input
- closure capture behavior / Closure capture behavior
- variables
- about / Constants and variables