이 자료는 이영록강사님이 2011년 iOS 개발자 포럼에서 발표한 내용을 약간 개선하고 정리한 자료입니다.
iOS의 메모리관리 기법은 retain count라고 하는 독특하면서도 효율적인 방법을 사용하며 최근에 발표된 Xcode에서는 Automatic Reference Counting(ARC) 기법을 통해 release를 사용하에 객체를 소거하는 불편함을 많이 개선하였습니다.
본 자료에서는 이러한 점에 대한 비교적 상세한 설명을 담고 있습니다.
애플 스위프트 언어 개발 가이드를 기반으로 초기화 관련된 내용을 정리했습니다. 초기화가 복잡합니다. 크게 복잡하지 않을 수도 있는 내용이지만 언어마다 조금씩 다른 부분을 잘 정리했습니다.
http://cafe.naver.com/architect1 에서 스터디 진행중입니다.
기본적인 뼈대는 http://swift.leantra.kr/ 를 기반으로 합니다.
요즘 크로스플랫폼 앱개발 자마린 인기죠^^
Xamarin.iOS를 기반으로 아이폰용 HelloWorld를 간단히 실습하는 자료 입니다. 보시고 천천히 따라해 보세요~
Xamarin.ios 단일뷰 앱 프로젝트를 생성하자. (프로젝트명 : iOS_Hello)
Main.storyboard를 더블 클릭해서 아래 화면 처럼 UI를 구성하자.
Label(Text : 이름을 입력하세요.)
Text Field(Name : txtName, Text : “”)
Button(Name : btnAdd, Text : Add)
Label(Name : lblNames)
Button(Name : btnNext, Text : 다음 화면)
이 자료는 이영록강사님이 2011년 iOS 개발자 포럼에서 발표한 내용을 약간 개선하고 정리한 자료입니다.
iOS의 메모리관리 기법은 retain count라고 하는 독특하면서도 효율적인 방법을 사용하며 최근에 발표된 Xcode에서는 Automatic Reference Counting(ARC) 기법을 통해 release를 사용하에 객체를 소거하는 불편함을 많이 개선하였습니다.
본 자료에서는 이러한 점에 대한 비교적 상세한 설명을 담고 있습니다.
애플 스위프트 언어 개발 가이드를 기반으로 초기화 관련된 내용을 정리했습니다. 초기화가 복잡합니다. 크게 복잡하지 않을 수도 있는 내용이지만 언어마다 조금씩 다른 부분을 잘 정리했습니다.
http://cafe.naver.com/architect1 에서 스터디 진행중입니다.
기본적인 뼈대는 http://swift.leantra.kr/ 를 기반으로 합니다.
요즘 크로스플랫폼 앱개발 자마린 인기죠^^
Xamarin.iOS를 기반으로 아이폰용 HelloWorld를 간단히 실습하는 자료 입니다. 보시고 천천히 따라해 보세요~
Xamarin.ios 단일뷰 앱 프로젝트를 생성하자. (프로젝트명 : iOS_Hello)
Main.storyboard를 더블 클릭해서 아래 화면 처럼 UI를 구성하자.
Label(Text : 이름을 입력하세요.)
Text Field(Name : txtName, Text : “”)
Button(Name : btnAdd, Text : Add)
Label(Name : lblNames)
Button(Name : btnNext, Text : 다음 화면)
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
첫번째 작성한 Xamarin.iOS 예제를 통해 View Controller가 자신의 Content View 계층 구조를 Window에 로드하는 하나의 Window만 가지고 있음을 알수 있었고 두번째 멀티화면 예제를 통해 새로운 화면(Scene)을 추가하고 아래 그림과 같이 두 화면(Scene) 사이에 이름을 전달했다.
사용자가 입력한 여러 개의 이름은 첫 번째 화면에서 입력되고 첫 번째 View Controller에서 두 번째 화면(Scene)으로 전달되어 두 번째 화면에 표시된다. 화면, 뷰 컨트롤러 및 데이터의 분리는 모델, 뷰, 컨트롤러 (MVC) 패턴을 따른다.
Model-View-Controller는 디자인 패턴으로 재사용 가능한 아키텍처 인데, MVC는 그래픽 사용자 인터페이스(GUI)가 있는 응용 프로그램의 아키텍처이다. 애플리케이션의 객체를 모델 (데이터 또는 애플리케이션 로직), 뷰 (사용자 인터페이스) 및 컨트롤러 (코드 비하인드)의 세 가지 역할 중 하나에 할당한다.
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
첫번째 작성한 Xamarin.iOS 예제를 통해 View Controller가 자신의 Content View 계층 구조를 Window에 로드하는 하나의 Window만 가지고 있음을 알수 있었고 두번째 멀티화면 예제를 통해 새로운 화면(Scene)을 추가하고 아래 그림과 같이 두 화면(Scene) 사이에 이름을 전달했다.
사용자가 입력한 여러 개의 이름은 첫 번째 화면에서 입력되고 첫 번째 View Controller에서 두 번째 화면(Scene)으로 전달되어 두 번째 화면에 표시된다. 화면, 뷰 컨트롤러 및 데이터의 분리는 모델, 뷰, 컨트롤러 (MVC) 패턴을 따른다.
Model-View-Controller는 디자인 패턴으로 재사용 가능한 아키텍처 인데, MVC는 그래픽 사용자 인터페이스(GUI)가 있는 응용 프로그램의 아키텍처이다. 애플리케이션의 객체를 모델 (데이터 또는 애플리케이션 로직), 뷰 (사용자 인터페이스) 및 컨트롤러 (코드 비하인드)의 세 가지 역할 중 하나에 할당한다.
13. Table View Controller
0 DataSource 주요 함수 및 실행 순서
- numberOfSectionInTableView:
- tableView:numberOfRowsInSection:
- tableView:cellForRowAtIndexPath:
26. To-Do App #2
0 Singleton Pattern
- 하나의 인스턴스
- 어디서든 접근 가능
- 리스트 자체를 관리 (get/set for key from list)
0 UserDefaults
- Library/Preferences/{appID}.plist
- NSData, NSString, NSNumber, NSDate, NSArray, NSDictionary
- or Serialization (NSKeyedArchiver/NSKeyedUnarchiver)
0 Serialization
- flatMap
0 dequeueReusableCellWithIdentifier
- TableViewCell 재사용
27. To-Do App #3
0 Project 생성
0 Storyboard -> NavigationController 추가
- 기본 TableViewController 를 ViewController 로 교체
- RootViewController 지정
- NavigationBar -> Bar Button Item (Left / Right) 추가
- Left Bar Button Item -> Edit 속성 변경
- Right Bar Button Item -> Add 속성 변경
0 TableView 생성
- delegate, dataSource 연결
- Table View -> Table View Cell 생성 (title, subtitle 추가 )
0 View Controller -> Delegate, DataSource 코드 작성
- taskManager.loadAll()
- taskManager.taskModelArray 연동
28. To-Do App #4
0 EditViewController 생성
- Navigation Item 생성
- Navigation Item -> Bar Button Item 추가
- Right Bar Button Item -> Done 속성 변경
- Done 버튼 -> 함수 연결
0 EditViewController -> TextField (title/subtitle) 추가
- Done 함수와 title/subtitle 필드 연동
- TaskModel 생성 후 TaskManager.append()
30. Catalog App #1
0 Image Resource, Plist Data
- 리소스 파일 다운로드
- https://db.tt/ssZptzKv
0 CatalogInfo.plist
- Dictionary 타입의 데이터 파일
- 프로젝트 디렉토리에 복사 후 Drag & Drop
0 images
- 이미지 리소스 폴더
- 프로젝트 내 Assets.xcassets 내부로 Drag & Drop
32. Catalog App #3
0 Plist 로드
- let path = NSBundle.mainBundle().pathForResource("CatalogInfo", ofType: "plist")!
- self.infoArray = NSArray(contentsOfFile: path)!
0 Key/Value Coding.
- NSObject.valueForKey(key)
- NSObject.setValue(value, forKey:key)
- NSObject.setValue(value, forKeyPath:classPath)
- dictionary = from.dictionaryWithValuesForKeys(keys:[“a”, “b”, “c”, …])
0 Block coding in swift vs ObjectiveC
{ (parameters) -> return type in
statements
}
0 scrollView.contentSize
- height = CGRectGetMakeY( lastObject.frame )
33. Catalog App #4
0 Project 생성
- 기존 ViewController 제거
0 Tab Bar Controller 추가
- Tab 이름 / 아이콘 설정
0 Intro Tab Bar
- Intro -> Scroll View 추가
- IntroViewController.swift 생성 / Scene 연결
- Scroll View -> intro image 적용
0 AppInfo Tab Bar
- AppInfo -> Image View 추가
- Appinfo image 적용
34. Catalog App #5
0 Navigation Controller 추가
- 기존 연결된 TableViewController 제거
- Tab Bar Controller 연결
- Tab 이름 / 아이콘 설정
0 View Controller 생성
- Navigation Controller 의 rootViewController 연결
- CatalogListViewController.swift 생성 후 연결
0 TableView 생성
- delegate, dataSource 연결
- Table View -> Table View Cell 생성 (image:120x85, label, tag 추가 )
- catalogListManager 와 dataSource delegate 연결 코드 작성
- Table View Cell 높이 설정 height : 85
35. Catalog App #6
0 View Controller 생성
- image(4:3), thumbnail, label, score 컴포넌트 생성
- DetailViewController.swift 생성 후 연결
- CatalogModel 연동 코드 작성
0 prepareForSegue 연결
- CatalogListViewController 과 DetailViewController 연결 코드 작성
- CatalogModel 데이터 전달
36. Test Code
0 XCTestCase 객체를 상속하여 File 생성
- CatalogTests : XCTestCase {}
- 테스트할 대상과 유사한 파일 명으로 생성후 값 / 함수 테스트
0 Target 지정
- 테스트 시 사용할 객체를 지정
- Singleton 객체의 경우 테스트 전 로드
0 테스트 전 , 후 수행할 코드 작성
- setUp()
- tearDown()
0 테스트 함수 작성
- test + 테스트 명 ()