강사: 윤성관 (admin@lingostar.co.kr)
www.schoology.com을 활용하여 강의 진행, 강의 종료 후 에도 사용가능
iOS의 Core OS는 UNIX를 사용하고 있다. 최근에는 UNIX 공식 버전의 인정을 받았고, Apple의 정책에 의해 일부 기능이 막혀 있을 뿐이다.
다음과 같은 것을 사용할 수 없다.
1. 백그라운드 프로세스
2. Sandbox
Apple은 Apple Push Notification Service를 사용하 Background
Background Fetch
1. 주기적
- 앱은 서버에 주기적으로 접근해서 콘텐츠를 다운함.
- 시스템에 등록하면 주기적으로 실행시킴.
- 적당한 시간은 시스템에서 판단.
2. APNS(Remote Notification)
- 새콘텐트 Push Notification 백그라운드에서 Fetch 가능
- Silent Notification
Application은 Applications 폴더 내에 자신의 Sandbox 폴더에 묶여 있다. 연락처, 사진 등은 Library 를 제공하여 접근이 가능하도록 한다. 하지만, 사용자의 문자, 최신 연락처 등은 사용할 수 없다.
- 우리나라 IT 환경에서의 문제
: KISA(한국인터넷 진흥원) -> OS X: ~/Library/NPKI , iOS: ?
iOS에서는 인증서 폴더를 설정할 수 없다.
- 1. 각 은행 랩의 Sandbox 폴더에 인증서를 관리
- 2. 인증서 앱을 설치하고 은행이나 인증을 필요한 앱은 인증서 앱에 접근해서 사용.
- 3. iCloud 공유 스토리지를 이용하면 가능하지 않을까?
- 4. iOS 8 Extentions 이용하면 가능하지 않을까?
개발 시 주의할 사항들
- n - 1의 iOS Version 까지 지원할 수 있으면 좋다. (현재 iOS 8)
: 기본적으로 동작이 완전히 달라졌다. (96% 이상이 n -1 버전을 사용한다.)
X code 시작하기
option + 마우스 클릭을 하면 해당 class의 도움말을 볼수 있다.
Interface Builder 에서 control 키를 누르고 label, button 등을 code editor로 끌어다 놓으면 Outlet, Action, Outlet Collection의 property를 만들어 사용할 수 있다.
Action 형태로 만들면 함수가 자동으로 생성이 되며 이곳에 해당 action이 발생했을 때의 코드를 작성하면 된다.
이렇게 생성된 코드는 IB와 연결되어 있는 것을 볼 수 있다. 아래 그림에서와 같이 property 왼쪽에 마우스를 올리면 IB에 해당 속성이 표시된다.
Objective - C 기본
메소드의 호출은 '[' 를 사용하여 호출한다.
id a = [object message: param];
아래 3개의 코드는 같다.
self.myLabel.textColor = [UIColor redColor];
[self.myLabel setTextColor:[UIColor redColor]];
[[self myLabel] setTextColor:[UIColor redColor]];
메세징
- 사실상 C 구조체
- 함수 포인터 리스트
- objc_msgSend()
- 메소드 캐싱
런타임
- 객체간의 메세징을 지원하는 작은 라이브러리
- libobjc.A.dylib(objc.dll)
Dynamic Typing
- id , void*, NSObject*
- 오브젝트 타입은 런타임시에 결정
레거시인가?
- 2014년 Swift 발표
- 애플은 래거시 지원에 인색
- 기존의 프레임워크들이 모두 Objective-C
- 디버깅 문제
LLVM(Low Level Virtual Machine)
- www.llvm.org
- 오픈소스 컴파일러 컴퍼넌트
- 2002년 시작, 현재 애플이 스폰서, google, Cray, Adobe, IBM 등 참여
- 다양한 언어의 프런트 엔드 진행중
- Clang 프런트엔드를 통해 바이트코드(IR)로 번역
-LLVM 백엔드(JIT) 가 바이너리로
Swift
애플은 왜?
Swift라는 언어를 만들었나?
- Objective-C 언어가 이제 막 언어사용빈도 3위에 올랐는데
- 앱스토어에 백만개 이상의 앱이 Objective-C로 작성되었는데
- 개발자는은 어떻하라고?
OOP, Functional Programming
- 멀티코어 시대엔 새로운 패러다임이 필요
- Java, Objective-C 등에도 함수형 문법 추가
함수형 언어의 시대
- Miranda(1982)에서 시작
- 함수형 언어
Pomodor Timer - 1
IB는 다음과 같이 구성한다.
Label 3개와 Button 2개로 위와 같이 화면을 구성한다.
아래와 같이 인스턴스 변수를 선언 할 수 있다.
property를 만들면 getter와 setter가 만들어진다. 그리고, 인스턴스 변수도 만들어진다.
아래의 경우 _timeLabel 도 자동으로 생성이 된다. 즉, UILable* _timeLabel 이 생성되는 것이다.
* outlet으로 선언된 변수들은 property로 설정이 되며, Action으로 설정하면 함수로 만들어진다.
아래와 같이 implementation을 작성한다. viewDidLoad는 application이 로드 된 이후에 불린다.
startPause에서는 버튼이 눌리면 NSTimer를 통해 1초 마다 timeGose라른 callback 함수가 불리도록 한다.
timeGose 함수가 불리면 labelUpdate라는 함수를 통하여 가운데 Label을 업데이트 한다.
X Code 에서는 끌어다 놓은 것을 View Controller에 자동으로 생성해 준다.
아래와 같이 View Controller를 선택하고 Inspector 창에 보면 자동으로 연결된 Outlet을 볼수 있다. 빈 공간의 Outlet은 연결된 행동이 없다는 것으로 error를 유발할 수 있다. 코드에서 지우지 말고 반드시 Outlet 도 삭제 해주어야 한다.
'디지털 양피지 > iPhone Development' 카테고리의 다른 글
iPone App. 개발 기본 (2015.6) - 5일차 (0) | 2015.06.05 |
---|---|
iPone App. 개발 기본 (2015.6) - 4일차 (0) | 2015.06.05 |
iPone App. 개발 기본 (2015.6) - 3일차 (0) | 2015.06.03 |
iPone App. 개발 기본 (2015.6) - 2일차(오후) (0) | 2015.06.02 |
iPone App. 개발 기본 (2015.6) - 2일차(오전) (0) | 2015.06.02 |