iOS development (OWN) Flashcards

1
Q

armv6 architecture

A

hardware support for double precision floating point arithmetic

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

armv7

A

provides legacy software support for double precision floating point arithmetic.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

The older iOS devices (iPhone, iPhone 3G, first and second generation iPod touch) had CPUs

A

only supported the armv6 instruction set

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

The iPhone 3G S (and iPad and third-generation iPod touch) has a newer processor

A

also supports the armv7 instruction set

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

compile for both

A

if you want your app to run on iPad and all iPhone/iPod toch models. Older iOS devices use arm6 and new ones use arm7

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

The only reason to not compile for one or the other

A

would be reduced app size since it only needs one compiled version of the code. But unless you have a seriously large codebase, this file size difference will be pretty marginal.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

dispatch_async

A

Submits a block for asynchronous execution on a dispatch queue and returns immediately.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

dispatch_async

A

Submits a block for asynchronous execution on a dispatch queue and returns immediately.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

dispatch_get_main_queue

A

dispatch_get_main_queue

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

DISPATCH_QUEUE_PRIORITY_HIGH

A

DISPATCH_QUEUE_PRIORITY

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

awakeFromNib

A

awakeFromNib is called when the controller itself is unarchived from a nib. viewDidLoad is called when the view is created/unarchived. This distinction is especially important when the controller’s view is stored in a separate nib file.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

key chain

A

The iPhone key chain is a secure area within the iPhone. This is where many apps store their information like license keys, username-passwords and more.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Managing Application Entitlements

A

iOS provides access to special resources and capabilities—such as whether your application can be debugged—through properties called entitlements

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

isa

A

a pointer to the class that the object is an instance of (that’s how the object and Objective-C runtime knows what kind of object it is).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Jenkins

A

s an open source continuous integration tool written in Java.Builds can be started by various means, including being triggered by commit in a version control system, scheduling via a cron-like mechanism, building when other builds have completed, and by requesting a specific build URL.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

vulture

A

http://farm4.staticflickr.com/3122/3160312166_b39eb7b133.jpg

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

gerrit

A

Gerrit is a web based code review system, facilitating online code reviews for projects using the Git version control system.
Gerrit makes reviews easier by showing changes in a side-by-side display, and allowing inline comments to be added by any reviewer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

gerrit

A

Gerrit simplifies Git based project maintainership by permitting any authorized user to submit changes to the master Git repository, rather than requiring all approved changes to be merged in by hand by the project maintainer. This functionality enables a more centralized usage of Git.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

AwakeFromNib

A

When a nib is loaded, the nib loader allocates and initializes all objects, then hooks up all of their outlets and actions. Because of the order in which this happens, you cannot access outlets in your initializer. You can try, but they will all be nil.

After all outlets and actions are connected, the nib loader sends awakeFromNib to every object in the nib. This is where you can access outlets to set up default values or do configuration in code.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

git push origin ql_alliance:refs/for/ql_alliance

A

Counting objects: 21, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (11/11), 1.35 KiB, done.
Total 11 (delta 8), reused 0 (delta 0)
remote: Resolving deltas: 100% (8/8)
remote: (W) 5fc0e2f: commit subject >65 characters; use shorter first paragraph
remote: (W) 5fc0e2f: commit message lines >70 characters; manually wrap lines
remote:
remote: New Changes:
remote: https://gerrit.dev.monitise.net:9090/6787
remote:
To ssh://zhuange@gerrit.dev.monitise.net:29418/QuantumLeapP2P_PoC
* [new branch] ql_alliance -> refs/for/ql_alliance

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

.ipa

A

An .ipa file is an iPhone application archive file which stores an iPhone app. It is usually encrypted with Apple’s FairPlay DRM technology.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

entitlements.plist

A

get-task-allow

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

NSURLConnection

A

An NSURLConnection object provides support to perform
asynchronous loads of a URL request, providing data to a
client supplied delegate.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Asynchronous Callbacks

A

Sometimes functions can take a long time to return

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
LoginController
showCannotConnectError | ConnectionErrorViewController_iPhone
26
nib file
he resulting interface is stored as a .nib file, short for NeXT Interface Builder, or more recently, as a .xib file.
27
Designated initializer
initWithNibName
28
delegation pattern
where an object, instead of performing one of its stated tasks, delegates that task to an associated helper object.
29
BRANCHING AND MERGING
When you checkout different branches, you change contexts that you are working in and you can quickly context-switch back and forth between several different branches.
30
"Fast forward
Because the commit pointed to by the branch you merged in was directly upstream of the commit you’re on, Git moves the pointer forward. To phrase that another way, when you try to merge one commit with a commit that can be reached by following the first commit’s history, Git simplifies things by moving the pointer forward because there is no divergent work to merge together — this is called a "fast forward".
31
PlistBuddy
PlistBuddy -c "Set :CFBundleVersion $p" "$WORKSPACE/$RBS_TARGET_NAME Branding/Info.plist"
32
Rebasing
In Git, there are two main ways to integrate changes from one branch into another - the ‘merge’ and the ‘rebase’. In this section we will learn what ‘rebasing’ is, how to do it and in what cases it may not be a good idea to.
33
204 No Content
The server successfully processed the request, but is not returning any content.[2]
34
200 OK
Standard response for successful HTTP requests. The actual response will depend on the request method used. In a GET request, the response will contain an entity corresponding to the requested resource. In a POST request the response will contain an entity describing or containing the result of the action.
35
2xx Success
This class of status codes indicates the action requested by the client was received, understood, accepted and processed successfully.
36
TDD
Test driven development
37
GHUnit over OCUnit
IMHO, this shows the real power of the GHUnit testing framework, not only does it run in the simulator but it also runs on your own iPhone, iPad, etc. Whereas OCUnit can only run as part of your build on your own machine, not on your phone and not in the simulator, this for me, is a big dealbreaker. The closer you can get your unit tests running against a real-world environment the better it will be. Why? Because you are making use of the real devices processor (not the intel x86), real memory management, or lack there-of, the real API’s etc. If my Unit tests run on my phone, i’m 99.999% certain that the code under test will actually run on, yes, you guessed it, my phone. There is of-course a downside to GHUnit, OCUnit (bundled with XCode) can be run automatically prior to you compiling your own app, this makes getting feedback about regression a lot faster, GHUnit is something which you have to run manually, in this case. But to solve that problem, or at least make it a whole lot better, we can use continuous integration aka build server to do the auto-running-of-unit-tests for us. There is a very nice blog post which compares various iOS unit testing frameworks.
38
git on dropbox
Dropbox takes care of this by syncing (very quickly) in the background. Setup is something like this: ~/project $ git init ~/project $ git add . ~/project $ git commit -m "first commit" ~/project $ cd ~/Dropbox/git ~/Dropbox/git $ git init --bare project.git ~/Dropbox/git $ cd ~/project ~/project $ git remote add origin ~/Dropbox/git/project.git ~/project $ git push -u origin master
39
Shared Keychain Setup
provides features that can be included in separate mobile applications. Because of that it is required to use shared and safe area to exchange user details.
40
Sharing keychain between mobile applications introduces following requirements:
Because keychain access depends on provisioning profile used to sign your application all of the mobile applications have to be signed with the same provisioning profile To enable shared access to the keychain for different mobile applications, all of the applications have to share the same bundle seed identifier.
41
a Bundle Seed ID
Each application using Appbank SDK must share a Bundle Seed ID, which allows shared keychain access. This is configured within the iOS management portal, “App IDs” section. You will need the identifier value for later use in application configuration.
42
Project Settings
For each mobile aplication project you are required to enable and add an entitlements file to enable the application to access shared keychain. Following steps will guide you through this process. Execute them on an already created Xcode project.
43
Declaring and Using a Block
``` You use the ^ operator to declare a block variable and to indicate the beginning of a block literal. int multiplier = 7; int (^myBlock)(int) = ^(int num) { return num * multiplier; }; ```
44
iPhone Configuration Utility
lets you easily create, encrypt, and install configuration profiles, track and install provisioning profiles and authorized apps, and capture device information, such as console logs.
45
UINavigationController
The UINavigationController class implements a specialized view controller that manages the navigation of hierarchical content. This class is not intended for subclassing. Instead, you use instances of it as-is in situations where you want your application’s user interface to reflect the hierarchical nature of your content. This navigation interface makes it possible to present your data efficiently and also makes it easier for the user to navigate that content.
46
NSManagedObjectContext
An instance of NSManagedObjectContext represents a single “object space” or scratch pad in an application. Its primary responsibility is to manage a collection of managed objects. These objects form a group of related model objects that represent an internally consistent view of one or more persistent stores. A single managed object instance exists in one and only one context, but multiple copies of an object can exist in different contexts. Thus object uniquing is scoped to a particular context.
47
CocoaPods
an Objective-C library manager
48
Managed Object Model
You can think of this as the database schema. It is a class that contains definitions for each of the objects (also called “Entities”) that you are storing in the database. Usually, you will use the visual editor you just peeked at to set up what objects are in the database, what their attributes, and how they relate to each other. However, you can do this with code too!
49
Persistent Store Coordinator
You can think of this as the database connection. Here’s where you set up the actual names and locations of what databases will be used to store the objects, and any time a managed object context needs to save something it goes through this single coordinator.
50
Managed Object Context
You can think of this as a “scratch pad” for objects that come from the database. It’s also the most important of the three for us, because we’ll be working with this the most. Basically, whenever you need to get objects, insert objects, or delete objects, you call methods on the managed object context
51
Apache Maven
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
52
Passes
Passes are a digital representation of information that might otherwise be printed on small pieces of paper or plastic
53
Provisioning Profile
An app signed by the following people may run on the following devices
54
Blocks and Retain Cycles
• Scoping • Programmatically • Attributes
55
Asynchronous Design Patterns
Make code more asynchronous • Avoid common trouble spots • Apply patterns to Apple APIs or your own
56
Asynchronous Design Patterns
``` Don’t Block the Main Thread Run in the Background Don’t Block Many Background Threads Integrate with the Main Runloop One Queue per Subsystem Improve Performance with Reader-Writer Access Separate Control and Data Flow Update State Asynchronously Move Out of Process with XPC ```
57
Dispatch Blocks
• No arguments • No return value • Rely on capturing variables
58
Dispatch Queues
FIFO Atomic Enqueue Automatic Dequeue
59
Call-Callback Pattern
``` void MyUpdateImageWithURL(NSImageView *view, NSURL *url) { }; MyDownloadAsync(url, ^(NSData *data) { NSImage *image = [[NSImage alloc] initWithData:data]; dispatch_async(dispatch_get_main_queue(), ^{ }); ```
60
XPC
Communicate Between Processes • Simple interface to look up services by name • Send and receive asynchronous messages • Deliver replies as blocks submitted to queues
61
User Data
• Documents ■ Text ■ Photos • Credentials • Preferences • Other ■ Photo metadata ■ Unique identifiers
62
Why Secure Naivete.app
Users are entrusting their data to your app ■ It could be sensitive ■ Assume it is and protect it • Real threats ■ Public networks ■ Lost device • Credentials are valuable
63
NullPointerException
Calling the instance method of a null object. Accessing or modifying the field of a null object. Taking the length of null as if it were an array. Accessing or modifying the slots of null as if it were an array. Throwing null as if it were a Throwable value.
64
Data Protection for All Files
Add com.apple.developer.default-data-protection entitlement Use NSFileProtectionComplete as its value Can still use APIs to control per file You’ll need a new provisioning profile
65
Data Protection
Use NSFileProtectionComplete unless you’ve a good reason not to
66
CocoaPods
CocoaPods is distributed as a ruby gem, installing it is as easy as running the following commands in the terminal:
67
Calendaring Extensions to WebDAV, or CalDAV
is an Internet standard allowing a client to access scheduling information on a remote server. It extends WebDAV (HTTP-based protocol for data manipulation) specification and uses iCalendar format for the data
68
SSH login without password
You want to use Linux and OpenSSH to automize your tasks. Therefore you need an automatic login from host A / user a to Host B / user b. You don't want to enter any passwords, because you want to call ssh from a within a shell script.
69
Base64
Base64 is a group of similar encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 representation. The Base64 term originates from a specific MIME content transfer encoding.
70
What is PAN
Permanent Account Number (PAN) is a ten-digit alphanumeric number allotted by Income Tax Department. Normally it is, issued in the form of a laminated card, by the IT Department.
71
SIP
Session Initiation Protocol
72
RSA Public Key Cryptography
RSA Public Key Cryptography Proof Explanation Example RSA (algorithm)