Professional Documents
Culture Documents
@ibdesignable
@ibdesignable
The attribute @IBDesignable lets Interface Builder perform live updates on a particular view. IB Designable
Synchronous: waits until the task have completed Asynchronous: completes a task in the background
Compilation Conditions to use if DEBUG … end if structure to include or disable given block of code ve
separate targets.
There are three parts of NS Error object a domain, an error code, and a user info dictionary. The domain is
a string that identifies what categories of errors this error is coming from.
Managing state, the bits of data that keep track of how the app is being used at the moment, is an important
part of a developing your app. Because enumerations define a finite number of states, and can bundle
associated values with each individual state, you can use them to model the state of your app and its internal
processes.
Enum is a type that basically contains a group of related values in the same umbrella but case-less enum
Reference: https://developer.apple.com/documentation/swift/maintaining_state_in_your_apps
6- What is the bounding box?
The bounding box is a term used in geometry; it refers to the smallest measure (area or volume) within
We use dynamic for subclasses of NSManagedObject. @dynamic tells the compiler that getter and setters
synchronized guarantees that only one thread can be executing that code in the block at any given time.
11- What is the difference strong, weaks, read only and copy?
strong, weak, assign property attributes define how memory for that property will be managed.
Weak ( non-strong reference ), means that we are pointing to an object but not increasing its reference
count. It’s often used when creating a parent child relationship. The parent has a strong reference to the
child but the child only has a weak reference to the parent.
Read-only, we can set the property initially but then it can’t be changed.
Copy means that we’re copying the value of the object when it’s created. Also prevents its value from
changing.
of a polymorphic operation that’s a method or a function to call at run time. This means, that when we
wanna invoke our methods like object method. but Swift does not default to dynamic dispatch
Code coverage is a metric that helps us to measure the value of our unit tests.
Completion handlers are super convenient when our app is making an API call, and we need to do
something when that task is done, like updating the UI to show the data from the API call. We’ll see
completion handlers in Apple’s APIs like dataTaskWithRequest and they can be pretty handy in your own
code.
The completion handler takes a chunk of code with 3 arguments:(NSData?, NSURLResponse?, NSError?)
The completion handlers have to marked @escaping since they are executed some point after the enclosing
When promoting an app, consider all the situations in which it could be useful.
16- What’s the difference between the frame and the bounds?
The bounds of a UI View is the rectangle, expressed as a location (x,y) and size (width, height) relative to
The frame of a UI View is the rectangle, expressed as a location (x,y) and size (width, height) relative to the
A Responder Chain is a hierarchy of objects that have the opportunity to respond to events received.
Regular expressions are special string patterns that describe how to search through a string.
Operator overloading allows us to change how existing operators behave with types that both already exist.
TVML Kit is the glue between TVML, JavaScript, and your native tv OS application.
First, tv OS provides no browser support of any kind, nor is there any Web Kit or other web-based
rendering engine you can program against. This means your app can’t link out to a web browser for
Second, tv OS apps cannot explicitly use local storage. At product launch, the devices ship with either 32
GB or 64 GB of hard drive space, but apps are not permitted to write directly to the onboard storage.
Functions let us group a series of statements together to perform some task. Once a function is created, it
can be reused over and over in your code. If you find yourself repeating statements in your code, then a
Pro Tip, Good functions accept input and return output. Bad functions set global variables and rely on other
functions to work.
ABIs are important when it comes to applications that use external libraries. If a program is built to use a
particular library and that library is later updated, you don’t want to have to re-compile that application (and
from the end user's standpoint, you may not have the source). If the updated library uses the same ABI,
then your program will not need to change. ABI stability will come with Swift 5.0
Design patterns are reusable solutions to common problems in software design. They’re templates
designed to help you write code that’s easy to understand and reuse. Most common Cocoa design patterns:
Creational: Singleton.
The Singleton design pattern ensures that only one instance exists for a given class and that there’s a
global access point to that instance. It usually uses lazy loading to create the single instance when it’s
The Facade design pattern provides a single interface to a complex subsystem. Instead of exposing the
user to a set of classes and their APIs, you only expose one simple unified API.
The Decorator pattern dynamically adds behaviors and responsibilities to an object without modifying its
code. It’s an alternative to subclassing where you modify a class’s behavior by wrapping it with another
object.
An Adapter allows classes with incompatible interfaces to work together. It wraps itself around an object
In the Observer pattern, one object notifies other objects of any state changes.
In Memento Pattern saves your stuff somewhere. Later on, this externalized state can be restored without
violating encapsulation; that is, private data remains private. One of Apple’s specialized implementations of
the Memento pattern is Archiving other hand iOS uses the Memento pattern as part of State Restoration.
31- Explain MVC
Models — responsible for the domain data or a data access layer which manipulates the data, think
Views — responsible for the presentation layer (GUI), for iOS environment think of everything
Controller/Presenter/ViewModel — the glue or the mediator between the Model and the View, in
general responsible for altering the Model by reacting to the user’s actions performed on the View and
UIKit independent representation of your View and its state. The View Model invokes changes in the Model
and updates itself with the updated Model, and since we have a binding between the View and the View
Your view model will actually take in your model, and it can format the information that’s going to be
There is a more known framework called RxSwift. It contains RxCocoa, which are reactive extensions for
_Null_unspecified, which bridges to a Swift implicitly unwrapped optional. This is the default.
_Null_resettable the value can never be nil, when read but you can set it to know to reset it. This is
We need to define the relations between the tables. Define the schema of all the tables.
Fast.
37- How many are there APIs for battery-efficient location tracking ?
to 1 km)
Region monitoring — track enter/exit events from circular regions with a radius equal to 100m or
Visit events — monitor place Visit events which are enters/exits from a place (home/office).
Closures
Type-safe language
Generics create code that does not get specific about underlying data types. Don’t catch this article.
Generics allow us to know what type it is going to contain. Generics also provides optimization for our code.
An initial value of the lazy stored properties is calculated only when the property is called for the first time.
defer keyword which provides a block of code that will be executed in the case when execution is leaving
We need to mention that there are two types of variables: reference and value types. The difference
between these two types is that by passing value type, the variable will create a copy of its data, and the
reference type variable will just point to the original data in the memory.
2. Delegate (Backward)
Concurrency is dividing up the execution paths of your program so that they are possibly running at the
same time. The common terminology: process, thread, multithreading, and others. Terminology;
Queues, Queues are lightweight data structures that manage objects in the order of First-in, First-out
(FIFO).
Synchronous vs Asynchronous tasks
GCD is a library that provides a low-level and object-based API to run tasks concurrently while managing
Serial Dispatch Queue A serial dispatch queue runs tasks one at a time.
Concurrent Dispatch Queue A concurrent dispatch queue runs as many tasks as it can without
Main Dispatch Queue A globally available serial queue that executes tasks on the application’s
main thread.
46- Readers-Writers
Multiple threads reading at the same time while there should be only one thread writing. The solution to the
problem is a readers-writers lock which allows concurrent read-only access and an exclusive write access.
Terminology;
Race Condition A race condition occurs when two or more threads can access shared data and
Deadlock A deadlock occurs when two or sometimes more tasks wait for the other to finish, and
Readers-Writers problem Multiple threads reading at the same time while there should be only one
thread writing.
Readers-writer lock Such a lock allows concurrent read-only access to the shared resource while
Dispatch Barrier Block Dispatch barrier blocks create a serial-style bottleneck when working with
concurrent queues.
NSOperation adds a little extra overhead compared to GCD, but we can add dependency among various
KVC adds stands for Key-Value Coding. It’s a mechanism by which an object’s properties can be accessed
using string’s at runtime rather than having to statically know the property names at development time.
KVO stands for Key-Value Observing and allows a controller or class to observe changes to a property
value. In KVO, an object can ask to be notified of any changes to a specific property, whenever that
One is avoiding the pyramid of doom, as others have mentioned — lots of annoying if let statements nested
inside each other moving further and further to the right. The second benefit is providing an early exit out of
Method Swizzling is a well-known practice in Objective-C and in other languages that support dynamic
method dispatching.
Through swizzling, the implementation of a method can be replaced with a different one at runtime, by
changing the mapping between a specific #selector(method) and the function that contains its
implementation.
To use method swizzling with your Swift classes there are two requirements that you must comply with:
The methods you want to swizzle must have the dynamic attribute
Escaping closure means, inside the function, you can still run the closure (or not); the extra bit of the
closure is stored someplace that will outlive the function. There are several ways to have a closure escape
the queue will hold onto the closure for you. You have no idea when the closure will be
executed and there’s no guarantee it will complete before the function returns.
Storage: Storing the closure to a global variable, property, or any other bit of storage that lives
on past the function call means the closure has also escaped.
for more details.
unowned ( non-strong reference ) does the same as weak with one exception: The variable will not
When you try to access the variable after its instance has been deallocated. That means, you should only
use unowned when you are sure, that this variable will never be accessed after the corresponding instance
However, if you don’t want the variable to be weak AND you are sure that it can’t be accessed after the
By declaring it [weak self] you get to handle the case that it might be nil inside the closure at some point
and therefore the variable must be an optional. A case for using [weak self] in an asynchronous network
4- What is ARC ?
ARC is a compile time feature that is Apple’s version of automated memory management. It stands
for Automatic Reference Counting. This means that it only frees up memory for objects when there
5- Explain #keyPath() ?
Using #keyPath(), a static type check will be performed by virtue of the key-path literal string being used as
AppDelegateis part of the UIKit framework. The SceneDelegatetakes over this roles from the app delegate
with iOS13. The concept of a window is replaced by that of a scene. Multiple scenes allow us to build multi-
1. (Unlike PhoneGap) with React Native your application logic is written and runs in JavaScript,
whereas your application UI is fully native; therefore you have none of the compromises
2. Additionally (unlike Titanium), React introduces a novel, radical and highly functional approach
8- What is NSFetchRequest?
NSFetchRequest is the class responsible for fetching from Core Data. Fetch requests are both powerful
and flexible. You can use fetch requests to fetch a set of objects meeting the provided criteria, individual
9- Explain NSPersistentContainer
The persistent container creates and returns a container, having loaded the store for the application to it.
This property is optional since there are legitimate error conditions that could cause the creation of the store
to fail.
NSFetchedResultsController is a controller, but it’s not a view controller. It has no user interface. Its
purpose is to make developers’ lives easier by abstracting away much of the code needed to synchronize a
Set up an NSFetchedResultsController correctly, and your table will mimic its data source without you have
The View Debugger lets us visualize our layouts and see constraint definitions at runtime.
Although this has been around since Xcode 6, Xcode 8 introduces some handy new warnings
The Thread Sanitizer is an all new runtime tool in Xcode 8 that alerts you to threading issues
The Memory Graph Debugger is also brand new to Xcode 8. It provides visualization of your
app’s memory graph at a point in time and flags leaks in the Issue navigator.
1. You are not allowed to write any production code unless it is to make a failing unit test pass.
2. You are not allowed to write any more of a unit test than is sufficient to fail; and compilation
unit test.
By adding the keyword final in front of the method name, we prevent the method from being overridden. If
we can replace the final class keyword with a single word static and get the same behavior.
Yak shaving is a programming term that refers to a series of tasks that need to be performed before a
open allows other modules to use the class and inherit the class; for members, it allows others modules to
public only allows other modules to use the public classes and the public members. Public classes can no
16- What is the difference fileprivate, private and public private(set) access level ?
fileprivate is accessible within the current file from different classes or struct, private is accessible within
Internal access enables entities to be used within any source file from their defining module, but not in any
Internal access is the default level of access. So even though we haven’t been writing any access control
specifiers in our code, our code has been at an internal level by default.
The main difference between BDD and TDD is the fact that BDD test cases can be read by non-engineers,
AAA is a pattern for arranging and formatting code in Unit Tests. If we were to write XCTests each of our
Writing tests first gives us a clear perspective on the API design, by getting into the mindset of
If tests are hard to write its usually a sign architecture could be improved. Following RGR
21- What is five essential practical guidelines to improve your typographic quality of mobile product
designs?
When we defined a variable as optional, then to get the value from this variable, we will have to unwrap it.
This just means putting an exclamation mark at the end of the variable. The example of the implicitly
unwrapped optional type is the IBOutlets we created for your view controller.
Education in context technique helping users interact with an element or surface in a way they have not
done so previously. This technique often includes slight visual cues and subtle animation.24- What is
bitcode ?
Bitcode refers to to the type of code: “LLVM Bitcode” that is sent to iTunes Connect. This allows Apple to
use certain calculations to re-optimize apps further (e.g: possibly downsize executable sizes). If Apple
needs to alter your executable then they can do this without a new build being uploaded.
25- Explain Swift Standard Library Protocol ?
There are a few different protocol. Equatable protocol, that governs how we can distinguish between two
instances of the same type. That means we can analyze. If we have a specific value is in our array.
and sequence protocol: prefix(while:) and drop(while:) [SE-0045].
Swift 4 introduces a new Codable protocol that lets us serialize and deserialize custom data types without
SVN relies on a centralised system for version management. It’s a central repository where working copies
Git relies on a distributed system for version management. You will have a local repository on which you
TableViews display a list of items, in a single column, a vertical fashion, and limited to vertical or horizontal
scrolling only.
CollectionViews also display a list of items, however, they can have multiple columns and rows.
Alamofire uses URL Loading System in the background, so it does integrate well with the Apple-provided
mechanisms for all the network development. This means, It provides chainable request/response methods,
JSON parameter and response serialization, authentication, and many other features. It has thread
mechanics and executes requests on a background thread and call completion blocks on the main thread.
29- REST, HTTP, JSON — What’s that?
HTTP is the application protocol or set of rules, websites use to transfer data from the web server to client.
The client (your web browser or app) use to indicate the desired action:
GET: Used to retrieve data, such as a web page, but doesn’t alter any data on the server.
HEAD: Identical to GET but only sends back the headers and none of the actual data.
POST: Used to send data to the server, commonly used when filling a form and clicking
submit.
REST, or REpresentational State Transfer, is a set of rules for designing consistent, easy-to-use and
JSON stands for JavaScript Object Notation; it provides a straightforward, human-readable and portable
mechanism for transporting data between two systems. Apple supplies the JSONSerialization class to help
Code modularity
Code reuse
You can share your framework with your other apps, team members, or the iOS community. When
combined with Swift’s access control, frameworks help define strong, testable interfaces between code
modules.
The Swift Package Manager will help to vastly improve the Swift ecosystem, making Swift much easier to
use and deploy on platforms without Xcode such as Linux. The Swift Package Manager also addresses the
problem of dependency hell that can happen when using many interdependent libraries.
The Swift Package Manager only supports using the master branch. Swift Package Manager now supports
Delegates and NSNotifications can be used to accomplish nearly the same functionality. However,
Because at most only a single object needs to know about the event.
- loadView
Creates the view that the controller manages. It’s only called when the view controller is created and only
when done programatically. It is responsible for making the view property exist in the first place.
- viewDidLoad
Called after the controller’s view is loaded into memory. It’s only called when the view is created.
- viewWillAppear
It’s called whenever the view is presented on the screen. In this step the view has bounds defined but the
Called to notify the view controller that its view is about to layout its subviews. This method is called every
- viewDidLayoutSubviews
Called to notify the view controller that its view has just laid out its subviews. Make additional changes here
- viewDidAppear
Notifies the view controller that its view was added to a view hierarchy.
- viewWillDisappear
Before the transition to the next view controller happens and the origin view controller gets removed from
- viewDidDisappear
After a view controller gets removed from the screen, this method gets called. You usually override this
method to stop tasks that are should not run while a view controller is not on screen.
- viewWillTransition(to:with:)
When the interface orientation changes, UIKit calls this method on the window’s root view controller before
the size changes are about to be made. The root view controller then notifies its child view controllers,
Clang is the front end of LLVM tool chain ( “clang” C Language Family Frontend for LLVM ).
Front end ( Clang ) takes the source code and generates abstract syntax tree ( LLVM IR ).
A class is meant to define an object and how it works. In this way, a class is like a blueprint of an object.
The @interface in Objective-C has nothing to do with Java interfaces. It simply declares a public interface
UIStackView provides a way to layout a series of views horizontally or vertically. We can define how the
contained views adjust themselves to the available space. Don’t miss this article.
2. Inactive — The app is running in the foreground, but not receiving events. An iOS app can be
placed into an inactive state, for example, when a call or SMS message is received.
45- What are the most important application delegate methods a developer should handle?
The operating system calls specific methods within the application delegate to facilitate transitioning to and
from various states. The seven most important application delegate methods a developer should handle
are:
application:willFinishLaunchingWithOptions
Method called when the launch process is initiated. This is the first opportunity to execute any code within
the app.
application:didFinishLaunchingWithOptions
Method called when the launch process is nearly complete. Since this method is called is before any of the
app’s windows are displayed, it is the last opportunity to prepare the interface and make any final
adjustments.
applicationDidBecomeActive
Once the application has become active, the application delegate will receive a callback notification
This method is also called each time the app returns to an active state from a previous switch to inactive
There are several conditions that will spawn the applicationWillResignActive method. Each time a
temporary event, such as a phone call, happens this method gets called. It is also important to note that
“quitting” an iOS app does not terminate the processes, but rather moves the app to the background.
applicationDidEnterBackground
This method is called when an iOS app is running, but no longer in the foreground. In other words, the user
the app has approximately five seconds to perform tasks and return. If the method does not return within
This method is called as an app is preparing to move from the background to the foreground. The app,
however, is not moved into an active state without the applicationDidBecomeActive method being called.
This method gives a developer the opportunity to re-establish the settings of the previous running state
home button no longer quits the application. Force quitting the iOS app, or shutting down the device triggers
the applicationWillTerminate method. This is an opportunity to save the application configuration, settings,
According to apple, it returns the configuration data for UIKit to use when creating a new scene.
didDiscardSceneSessions
This method is called as an app’s user closed one or more scenes via the app switcher.
A property is a more abstract concept. An instance variable is literally just a storage slot, as a slot in a
struct. Normally other objects are never supposed to access them directly. Usually, a property will return or
set an instance variable, but it could use data from several or none at all.
Swift Package Manager is not supporting UIKit. We can create File Template or Framework for other
projects.
SDK is a set of software development tools. This set is used for the creation of applications. A framework is
basically a platform which is used for developing software applications. It provides the necessary foundation
on which the programs can be developed for a specific platform. SDK and Framework complement each
When we’re casting an object to another type in Objective-C, it’s pretty simple since there’s only one way to
do it. In Swift, though, there are two ways to cast — one that’s safe and one that’s not.
as! used to force casting, crash if failed. should only be used when we know the downcast will
succeed.
Using a labeled statement, we can specify which control structure we want to break no matter how deeply
you nest our loops. This also works with continue. If we have a complex structure that contains nested for
loops, a labeled statement will allow us to break from an outer loop and continue on with the execution of
the method.
It is an easily return an unwrapped optional or a default value. If we do not have value, we can set zero or
default value.
constants.
mutableLeaves Specifies that leaf strings in the JSON object graph are created as instances of
variable String.
allowFragments Specifies that the parser should allow top-level objects that are not an instance of
Array or Dictionary.
3- How can you prevent a user from doing said action more than once on their device?
Apple has introduced DeviceCheck in iOS 10. This API allows us to access per-device, per-developer data
in an iOS device. The solution is better than UserDefaults or Advertising Identifier. DeviceCheck allows us
4- What is DispatchGroup?
DispatchGroup allows for aggregate synchronization of work. We can use them to submit multiple different
work items and track when they all complete, even though they might run on different queues. This
behavior can be helpful when progress can’t be made until all of the specified tasks are complete.
— Apple’s Documentation
The most basic answer: If we need to wait on a couple of asynchronous or synchronous operations before
1. Red: Write a small amount of test code usually no more than seven lines of code and watch it fail.
2. Green: Write a small amount of production code. Again, usually no more than seven lines of code
3. Refactor: Tests are passing, you can make changes without worrying. Clean up your code. There
We use a storyboard or xib in our iOS app, then we created IBOutlets. IBOutlet is a property related to a
view. These are injected into the view controller when it is instantiated, which is essentially a form of
Dependency Injection.
There are forms of dependency injection: constructor injection, property injection and method injection.
There are two type of notifications: Remote and Local. Remote notification requires connection to a server.
Local notifications don’t require server connection. Local notifications happen on device.
Rule 1. Is Testability important to us? If so, then it is essential to identify external dependencies within the
class that you wish to test. Once dependencies can be injected we can easily replace real services for
Rules 2. Complex classes have complex dependencies, include application-level logic, or access external
resources such as the disk or the network. Most of the classes in your application will be complex, including
almost any controller object and most model objects. The easiest way to get started is to pick a complex
class in your application and look for places where you initialize other complex objects within that class.
Rules 3. If an object is creating instances of other objects that are shared dependencies within other objects
map(_:): Returns an array of results after transforming each element in the sequence using the
provided closure.
filter(_:): Returns an array of elements that satisfy the provided closure predicate.
reduce(_:_:): Returns a single value by combining each element in the sequence using the provided
closure.
sorted(by:): Returns an array of the elements in the sequence sorted based on the provided closure
predicate.
git squash
11- What is the difference ANY and ANYOBJECT ?
Any can represent an instance of any type at all, including function types and optional types.
Both of them helps us access Web services. SOAP relies exclusively on XML to provide messaging
services. SOAP is definitely the heavyweight choice for Web service access. Originally developed by
Microsoft.
REST ( Representational State Transfer ) provides a lighter weight alternative. Instead of using XML to
make a request, REST relies on a simple URL in many cases. REST can use four different HTTP 1.1 verbs
Charts have support iOS,tvOS, OSX The Apple side of the cross-platform MPAndroidChart.
A curated list of awesome iOS chart libraries, including Objective-C and Swift
14- What is the difference Filter and Map Function?
Map, we pass in a function that returns a value for each element in an array. The return value of this
Filter, we pass in a function that returns either true or false for each element. If the function that we pass
returns true for a given element, then the element is included in the final array.
Core data is an object graph manager which also has the ability to persist object graphs to the persistent
store on a disk. An object graph is like a map of all the different model objects in a typical model view
controller iOS application. CoreData has also integration with Core Spotlight.
But Core Data is not thread safe, meaning that, if you load a managed object on one thread, you can’t pass
it to another thread and use it safely. This becomes an issue when we want to start introducing threading for
The first is to keep everything on the main thread, which just means it’s single threaded. Or the second
means making changes on background threads and passing managed object IDs and then loading those
objects again on the main thread, but that would mean that you’re on the main thread, which puts us right
back where we started. Both of these kind of ruin the point of using threading within Core Data and they can
There’s also another option for that and it’s to convert the managed object to a plain old Swift object, or a
POSO.
If you want to create Generic Protocol we can use associatedtype. For more details check this out.
17- Which git command saves your code without making a commit ?
git stash
If high priority thread waits for low priority thread, this is called Priority Inversion. if low priority thread
temporarily inherit the priority of the highest priority thread, this is called Priority Inheritance.
Hashable allows us to use our objects as keys in a dictionary. So we can make our custom types that can
We use optional chaining when we do not really care if the operation fails; otherwise, we use if let or guard.
Optional chaining lets us run code only if our optional has a value.
Using the question mark operator like this is called optional chaining. Apple’s documentation explains it like
this:
Optional chaining is a process for querying and calling properties, methods, and subscripts on an optional
that might currently be nil. If the optional contains a value, the property, method, or subscript call succeeds; if
the optional is nil, the property, method, or subscript call returns nil. Multiple queries can be chained together,
and the entire chain fails gracefully if any link in the chain is nil.
Callbacks.
I follow style guide and coding conventions for Swift projects of Github and SwiftLint.
Reuse implementation
Modularity
GraphQL is trying to solve creating a query interface for the clients at the application level. Apollo iOS is a
implementation reuse
Continuous Integration allows us to get early feedback when something is going wrong during application
Self-hosted server
Xcode Server
Jenkins
TeamCity
Cloud solutions
TravisCI
Bitrise
Buddybuild
The difference between delegates and callbacks is that with delegates, the NetworkService is telling the
delegate “There is something changed.” With callbacks, the delegate is observing the NetworkService.
The first one is the one we want to keep. (we do not have to hold single data, we can keep as much
information as we want), and the other is the address information of the other node.
Disadvantages of Linked Lists, at the beginning, there is extra space usage. Because the Linked List have
an address information in addition to the existing information. This means more space usage.
Depends. I have experienced PARSE and I am awarded FBStart. I decided to learn pure back end. You
have two choices. Either you can learn node.js + express.js and mongodb. OR, you can
learn Vapor or Kitura.
If you want to learn Firebase, please just follow one month of Firebase Google Group.
AutoLayout provides a flexible and powerful layout system that describes how views and the UI controls
calculates the size and position in the hierarchy.
First, when you start to log. This starts to accumulate. It may not seem like a lot, but every minute adds up.
Second, Each time we add one to the code base, we take a risk of injecting new bugs into our code.
a value, pointers remove a layer of abstraction and let you see how that value is stored.
Not just for deep learning: also does logistic regression, decision trees, and other “classic” machine
learning models.
Comes with a handy converter tool that supports several different training packages (Keras, Caffe,
Cons:
Core ML only supports a limited number of model types. If you trained a model that does something
Core ML does not support, then you cannot use Core ML.
The conversion tools currently support only a few training packages. A notable omission is
TensorFlow, arguably the most popular machine learning tool out there. You can write your own
converters, but this isn’t a job for a novice. (The reason TensorFlow is not supported is that it is a low-
level package for making general computational graphs, while Core ML works at a much higher level of
abstraction.)
No flexibility, little control. The Core ML API is very basic, it only lets you load a model and run it.
For more information.
side-by-side this is the best way for the junior to learn from senior developers.
Check out Martin Fowler on “Pair Programming Misconceptions”, WikiHow on Pair Programming
Blocks are a way of defining a single task or unit of behavior without having to write an entire Objective-C
Keychain is an API for persisting data securly in iOS App. It is secured using a hardware module and is
New Notification extensions allow us to manage remote notification payloads before they’re
delivered.
39- Explain the difference between atomic and nonatomic synthesized properties
atomic : It is the default behaviour. If an object is declared as atomic then it becomes thread-safe. Thread-
safe means, at a time only one thread of a particular instance of that class can have the control over that
object.
nonatomic: It is not thread-safe. We can use the nonatomic property attribute to specify that synthesized
accessors simply set or return a value directly, with no guarantees about what happens if that same value is
accessed simultaneously from different threads. For this reason, it’s faster to access a nonatomic property
Apple wants to support one system version back, meaning that we should support iOS9 or
There are two steps to get device token. First, we must show the user’s permission screen, after we can
register for remote notifications. If these steps go well, the system will provide device token. If we uninstall
Encapsulation is an object-oriented design principles and hides the internal states and functionality of
An algorithm is an impression method used to determine the working time for an input N size. The big-o
notation grade is expressed by the highest value. And the big-o notation is finding the answer with the
For Loops big-o notation is O(N). Because For Loops work n times.
If we want to integrate open source project, add a framework from a third party project, or even reuse code
across our own projects, dependency management helps us to manage these relationships. Check this
out
UML Class Diagram is a set of rules and notations for the specification of a software system, managed and
We are telling the compiler that it can throw errors by using the throws keyword. Before we can throw an
error, we need to make a list of all the possible errors you want to throw.
We can adopt protocols using extensions as well as on the original type declaration. This allows you to add
48- What is three triggers for a local notification ? Location, Calendar, and Time Interval. A Location
notification fires when the GPS on your phone is at a location or geographic region. Calendar trigger is
based on calendar data broken into date components. Time Interval is a count of seconds until the timer
goes off.
49- Explain Selectors in ObjC Selectors are Objective-C’s internal representation of a method name.