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
Q

LoginController

A

showCannotConnectError

ConnectionErrorViewController_iPhone

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

nib file

A

he resulting interface is stored as a .nib file, short for NeXT Interface Builder, or more recently, as a .xib file.

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

Designated initializer

A

initWithNibName

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

delegation pattern

A

where an object, instead of performing one of its stated tasks, delegates that task to an associated helper object.

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

BRANCHING AND MERGING

A

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
Q

“Fast forward

A

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
Q

PlistBuddy

A

PlistBuddy -c “Set :CFBundleVersion $p” “$WORKSPACE/$RBS_TARGET_NAME Branding/Info.plist”

32
Q

Rebasing

A

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
Q

204 No Content

A

The server successfully processed the request, but is not returning any content.[2]

34
Q

200 OK

A

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
Q

2xx Success

A

This class of status codes indicates the action requested by the client was received, understood, accepted and processed successfully.

36
Q

TDD

A

Test driven development

37
Q

GHUnit over OCUnit

A

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
Q

git on dropbox

A

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
Q

Shared Keychain Setup

A

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
Q

Sharing keychain between mobile applications introduces following requirements:

A

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
Q

a Bundle Seed ID

A

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
Q

Project Settings

A

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
Q

Declaring and Using a Block

A
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
Q

iPhone Configuration Utility

A

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
Q

UINavigationController

A

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
Q

NSManagedObjectContext

A

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
Q

CocoaPods

A

an Objective-C library manager

48
Q

Managed Object Model

A

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
Q

Persistent Store Coordinator

A

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
Q

Managed Object Context

A

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
Q

Apache Maven

A

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
Q

Passes

A

Passes are a digital representation of information that might otherwise be printed on small pieces of paper or plastic

53
Q

Provisioning Profile

A

An app signed by the following people may run on the following devices

54
Q

Blocks and Retain Cycles

A

• Scoping • Programmatically • Attributes

55
Q

Asynchronous Design Patterns

A

Make code more asynchronous • Avoid common trouble spots • Apply patterns to Apple APIs or your own

56
Q

Asynchronous Design Patterns

A
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
Q

Dispatch Blocks

A

• No arguments • No return value • Rely on capturing variables

58
Q

Dispatch Queues

A

FIFO
Atomic Enqueue
Automatic Dequeue

59
Q

Call-Callback Pattern

A
void MyUpdateImageWithURL(NSImageView *view, NSURL *url) {
};
MyDownloadAsync(url, ^(NSData *data) { NSImage *image = [[NSImage alloc] initWithData:data]; dispatch_async(dispatch_get_main_queue(), ^{
});
60
Q

XPC

A

Communicate Between Processes
• Simple interface to look up services by name • Send and receive asynchronous messages • Deliver replies as blocks submitted to queues

61
Q

User Data

A

• Documents ■ Text
■ Photos • Credentials • Preferences • Other
■ Photo metadata ■ Unique identifiers

62
Q

Why Secure Naivete.app

A

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
Q

NullPointerException

A

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
Q

Data Protection for All Files

A

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
Q

Data Protection

A

Use NSFileProtectionComplete unless you’ve a good reason not to

66
Q

CocoaPods

A

CocoaPods is distributed as a ruby gem, installing it is as easy as running the following commands in the terminal:

67
Q

Calendaring Extensions to WebDAV, or CalDAV

A

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
Q

SSH login without password

A

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
Q

Base64

A

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
Q

What is PAN

A

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
Q

SIP

A

Session Initiation Protocol

72
Q

RSA Public Key Cryptography

A

RSA Public Key Cryptography Proof Explanation Example RSA (algorithm)