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 : 뷰 컨트롤러가 화면에 나타날 때마다 호출 됨.
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