본문 바로가기

Dev Platfrom/02. iOS

iOS a fundamental concept

iOS a fundamental concept



※ 앱 등록 가이드 라인 : [Appsnext](한글)앱스토어 리뷰 가이드라인.pdf


1. xib의 File's Owner는 xib가 속해 있는 Controller의 인스턴스를 대신 함.

2. 앱 배포하기

- Developer Certificate : 인증서 파일은 키체인 접근 앱을 사용해 맥 시스템의 키체인에 추가된다. 코드를 서명하는데 사용된다.

- App ID :  앱 ID는 앱스토어에서 자신의 앱을 유일하게 식별하는 문자열이다.

Provisioning Profile에 있는 앱 ID는 반드시 해당 앱 번들 ID와 일치해야 한다.

-  UDID : 장비 ID는 각 iOS 장비마다 유일하다.

- Provisioning Profile : 이 파일은 개발 장비와 컴퓨터에 위치하다. 개발자 인증서 와 단일 앱 ID, 앱이 설치될 장비들의 장비 ID 목록을 참조한다. 이 파일의 확장자는 .moblieprovision 이다.

3. Objective-C

- 객체 만들기 : 

> Party *partyInstance = [Party alloc];

> [partyInstance  init];

>> Party *partyInstance = [[Party alloc]  init ];

- nested message send (중첩 메시지 보내기) : 두 메시지를 한 줄로 합치는 것

- [ ] 메시지 보내기 

> receiver : 메시지를 실행할 객체의 포인터

> selector : 실행할 메소드의 이름

> arguments : 실해할 메소드에 매개변수로 전달되는 값들 

- @ 인스턴스를 만드는 축약형으로 만들 때 사용 됨.

> NSArray * a = @[ @"A", @"B", @"C" ] ;

- _weak 키워드 : 약한 참조

> 자식이 부모에 대한 참조를 얻기 위해서는 약한 참조를 가져야 한다. 그래야 메모리적으로 Leak이 나지 않으며 소멸 할 수 있다.

- _ : 인스턴스 변수를 앞에 _ 를 붙임.

- 프로퍼티 속성

> nonatomic vs atomic : http://dangercloz.tistory.com/84

> readwrite : 게터, 세터 / readonly : 게터

> 메모리 관리 속성 : strong, weak, copy, unsafe_unretained(기본값)

4. 뷰와 뷰 계층구조

- 뷰의 최상위 root를 iOS에서는 Windows라 함

- 뷰는 그 자체를 자신의 CALayer 인스턴스인 레이어에 나타낸다. 

5. 뷰 다시 그리기와 UIScrollView

- 런 루프 :  이벤트를 대기하는 루프

- UIView의 하위 클래스들은 그들 자신에게 내용이 변경될 때마다 setNeedsDisplay 메시지를 보낸다.

- property의 위치 .h(공개) vs .m(확장 클래스에서만 사용)

- 클래스의 확장

> ex) 

@interface xxx()

@property ~~~

@end

6. 뷰 컨트롤러

-  UIViewController는 UIView 프로퍼티를 가지며, UIView 인스턴스는 뷰 컨트롤러의 뷰 계층구조에서 최상위이다. 즉, ViewController 또한 최상위 UIView위에 그린다는 것을 의미 한다.

- ViewController에 그리는 방법, loadView 재정의 NIB를 읽어 오는 방식

- app bundle Pointer 가져오기

> NSBundle *appBundle = [ NSBundle mainBundle ];

- viewDidLoad : 뷰 컨트롤러의 뷰가 만들어진 후 호출 됨.

- viewWillAppear : 뷰 컨트롤러가 화면에 나타날 때마다 호출 됨.

- 앱/뷰 생명 주기 : https://medium.com/ios-development-with-swift/%EC%95%B1-%EC%83%9D%EB%AA%85%EC%A3%BC%EA%B8%B0-app-lifecycle-vs-%EB%B7%B0-%EC%83%9D%EB%AA%85%EC%A3%BC%EA%B8%B0-view-lifecycle-in-ios-336ae00d1855

7. 델리케이션과 텍스트 입력

- UIResponder : 이벤트를 제어하는 메소드를 정의 

8. UITableView와 UITableViewController

- UITableViewDataSource : UITableView에 표시할 내용을 알림

- UITableViewCell : 테이블뷰의 각 행의 뷰 인스턴스

9. UITableView 편집

- NSBundle : 앱과 그 앱 번들 사이의 인터페이스

- loadNibNamed:owner:options: XIB를 수동으로 로드하는 메소드

10.UINavigationController

- drill-down interface :  한 페이지에서 하위 페이지를 가지는 형태

- topViewController : UINavigationController의 최상위 Controller

- UINavigationController 에서  UIViewController가 사라질 때 viewVillDisapper 메시지를 보냄

11. 카메라

- Aspect Fit Mode : 이미지를 UIImageView에 어떻게 보여줄지( 이미지뷰 크기에 맞출지, 비율로 조절할지 등)

- 뷰 컨트롤러에 모달 뷰를 나타려면, presentViewController 메시지를 화면에 나타낼 view의 UIViewController에 보내야 함.

12. 터치 이벤트와 UIResponder

- Responder : 인식기 <-- 이벤트를 인식?

13. UIGestureRecognizer와 UIMenuController

- UITextField처럼 UIResponder의 하위 클래스들은 이들 메소드를 필요에 따라 적절하게 재정의한다. 이 메소드들은 모두 UIResponderStandardEditActions 프로토콜에 선언된다.

14. 디버그 도구

- 인스트루먼트(Instuments) : 프로그램 성능 측정 및 통계를 도구

15. 오토 레이아웃 소개

- viewDidLayoutSubView : 화면에 처음 뷰가 나타날 때나 뷰의 크기가 바뀔 때 마다 호출 됨

16. 오토 레이아웃 : 프로그램밍으로 제약조건 만들기

-  제약 조건 만드는 방법 :

+ 포멧 문자열을 이용 : @"H:|-0-[imageView]-0-|"

+ NSLayoutContraint 인스턴스를 이용하는 방법

- 오토리사이징 마스크 

17.자동 회전, 팝오버 컨트롤러, 모달 뷰 컨트롤러

- supportedInterfaceOrientaions

- prepareViewForOrientaion : 장치의 회전 방향에 대한 메시지는 받음

- didRotateFromInterfaceOrientation : 회전이 끝난 다음

- UIPopoverController : 팝오버 컨트롤러는 앱의 다른 인터페이스 위에 경계선을 가진 윈도우를 띄워 또 다른 뷰 컨트롤러의 뷰를 표시 함.

18. 저장, 읽기, 앱 상태

- didReceiveMemoryWarning : ViewController에서 메모리 경고가 나타나면 호출되는 메소드

19. UITableViewCell 하위 클래스 만들기


https://itunes.apple.com/us/app/id381253120?l=ko&ls=1&mt=8