Ques 1
Explain the difference between a value type and a reference type in Swift.
A value type is copied when it's assigned to a new variable or passed as an argument, while a reference type refers to the same instance of the data.
Ques 2
What is ARC (Automatic Reference Counting) in Swift?
ARC is a memory management feature in Swift that automatically tracks and manages the memory usage of your app.
Ques 3
How does Swift handle error handling?
Swift uses a combination of 'try', 'catch', 'throw', and 'do' keywords for error handling using the Swift Error protocol.
Ques 4
What is the 'guard' statement in Swift?
The 'guard' statement is used to transfer control out of a scope if certain conditions aren't met, ensuring that a set of requirements is satisfied.
Ques 5
What is the Swift Codable protocol used for?
The Codable protocol is used for encoding and decoding data between Swift types and external data formats, such as JSON or Property Lists.
Ques 6
Explain lazy loading in Swift.
Lazy loading is a technique in Swift where a property is not initialized until it's accessed for the first time.
Ques 7
Explain the difference between synchronous and asynchronous tasks in Swift.
Synchronous tasks block the current thread until they are completed, while asynchronous tasks allow the program to continue executing other tasks without waiting.
Ques 8
What is the role of the 'unowned' keyword in Swift?
The 'unowned' keyword is used in Swift to declare a reference that does not keep a strong hold on the instance it refers to, and it is assumed to always have a value.
Ques 9
Explain the concept of generics in Swift.
Generics allow you to write flexible, reusable functions and types that can work with any type, subject to requirements that you define.
Ques 10
How does Swift handle memory management compared to Objective-C?
Swift uses Automatic Reference Counting (ARC) for memory management, eliminating the need for manual memory management in Objective-C.
Ques 11
Explain the difference between a struct and a class in Swift.
Structs are value types, while classes are reference types. Structs are copied when assigned or passed, whereas classes share a reference to the same instance.
Ques 12
Explain the concept of type casting in Swift.
Type casting is the process of converting one type to another, and it can be done in Swift using 'as', 'as?', and 'as!' operators.
Ques 13
How do you create a custom delegate in Swift?
To create a custom delegate in Swift, define a protocol, adopt it in the delegating class, and use optional delegate methods to notify the delegate of events.
Ques 14
Explain the concept of value semantics in Swift.
Value semantics mean that the value of a type is copied when assigned to a new variable or passed as an argument, ensuring that each instance is independent.
Ques 15
What is the 'NSRunLoop' equivalent in Swift?
In Swift, the equivalent to 'NSRunLoop' is 'RunLoop', which is used for managing input sources on a thread.
Ques 16
Explain the difference between '==', '===', and 'isEqual' in Swift.
'==' is used to check for value equality, '===' is used to check for reference equality, and 'isEqual' is typically used for comparing objects in Objective-C and is bridged to '==' in Swift.
Ques 17
Explain the 'escaping' closure and why it's necessary in Swift.
An 'escaping' closure is a closure that is called after the function it was passed to has returned. It's necessary when the closure is stored or outlives the scope of the function.
Ques 18
Explain the difference between 'defer' and 'finally' in Swift.
'defer' is used to execute a block of code just before the scope is exited, while 'finally' is not used in Swift. Instead, error handling with 'defer' and 'catch' is more idiomatic.
Ques 19
Explain the purpose of 'inout' parameters in Swift functions.
'inout' parameters allow a function to modify the value of the parameter directly, and any changes made inside the function affect the original value outside the function.
Ques 20
What is a closure capture list, and when would you use it?
A closure capture list specifies how variables and constants are captured and held by a closure. It's useful to prevent strong reference cycles, especially when capturing 'self' in closures.
Ques 21
What is the purpose of the 'autoreleasepool' in Swift?
The 'autoreleasepool' is used to manage the lifecycle of objects in memory, especially in performance-critical code or when working with Objective-C APIs.
Ques 22
What is the purpose of the 'NSCoding' protocol in Swift?
The 'NSCoding' protocol is used for encoding and decoding objects, typically for archiving and unarchiving data in iOS and macOS apps.
Ques 23
Explain the concept of key paths in Swift.
Key paths provide a way to reference properties in a type-safe manner. They are used in KVO, functional programming, and the 'Codable' protocol.
Ques 24
What are Swift access control levels, and how are they used?
Swift has five access control levels: 'open', 'public', 'internal', 'fileprivate', and 'private'. They control the visibility of classes, methods, and properties.