아이폰 개발 정리 2
* SDK 정리
1. 패턴 정리
1) MVC 패턴
: View와 Model은 독립적인 구조 (의존성이 전혀 없다.)
- Model : 뷰에서 보여지는 데이터
==> 파일, SQLite, 네트워크 서버
- View : 화면, 보여지는 부분
==> Interface Builder (IB) 툴을 이용
==> *.xib (nib 파일)
- Controller : View와 Model을 서로 연동시키는 역할.
==> Objective-C 클래스로 작성
==> *.h (헤더파일) , *.m (구현파일) 생성
2) delegate 패턴
: 사전적 의미 => '위임하다'
: 정의
=> 요청한 클래스에서 처리하는 것이 아니고, 다른 클래스로 요청을 떠 넘기는 방식
: 특징
=> 확장성
=> 의존성이 떨어진다. (장점)
3) target/action 패턴
: IB 없이 구현하는 액션메소드 처리 방법
: UIControl 하위 클래스에서만 사용 가능
2. Xcode가 아이폰을 개발할 때 'template'을 제공
(팁) 창 닫을 때 : cmd - W
(팁) .h <-> .m 파일 전환 : alt - cmd - [위화살표]
(팁) 저장 : cmd - S
3. SDK 실행
1) main 메소드(UIApplicationMain)가 실행
: UIApplication을 생성한다.
: 하나의 어플을 관리하는 클래스 -> File's Owner
2) delegate의 메소드가 수행된다.
: callback 메소드 (시스템이 호출하는 메소드)
라이브러리 : cmd - shift - L
어트리뷰트 : cmd - 1
(IBAction) = (void)
실행 : cmd - shift - R
3) XXXViewController 가 수행
: callback 메소드
: did~메소드가 수행
뷰 뷰콘트롤러
(버튼) <---------- UIButton (IBOutlet)
(버튼 클릭) --------------> buttonPressed (IBAction)
====> 어플 개발 방법
1) IB로 생성하는 방법
2) IB 없이 생성 방법 ---> 이것으로 가는 것이 Best
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
}
3) IB 와 날코딩 혼합 방법
4. UIKit
- UIKit Framework Reference 참조
: 계층구조
NSObject
|
UIResponder
|
+-------------------+---------------------+
UIView UIApplication UIViewController
| |
-XXXView -UITabBarController, UITableViewController
-UIWindow UINavigationController
-UIBar
- UILabel
-UIControl
|
UIButton
UITextField
UISwitch
UISlider
UIDataPicker
* UIControl에서만 IBAction 설정 가능
(id) -> 모든 클래스를 다 받을 수 있는 타입 (다형성)
5. UIButton
6. target/action 패턴
addTarget:
action:SEL 타입
* SEL 타입
=> 메소드를 클래스화
=> @selector(메소드명);
-(void)aaa{}
SEL a = @selector(aaa); --> 메소드를 동적으로 변경할 수 있게 한다.
7. UITextField
: 한줄 입력가능한 컴포넌트
( UITextView : 여러줄 입력가능)
: 자동으로 가상키보드가 생성된다. (자동으로 hide 안됨 => 코드 작업 필요 )
: 가상키보드의 종류
- 숫자, 이메일, 문자 등 …,
: 가상 키보드 제거
=> 해당 컴포넌트의 포커스 제거 (resignFirstResponder 이용)
: becomeFirstResponder 로 포커스 설정
=> delegation 패턴 이용 << 매우 중요 >>
: UITextFieldDelegate 프로토콜
1) 준수
2) 해당 컴포넌트와 delegate 연결
3) delegate 메소드 구현
** for 반복문 --> 컬렉션 반복문 <<중요>> 예제 18
for ( NSString *n in array) {
}
** type 체크하는 방법 --> 예제 16
8. 통지 (NSNotification)
: 개요
=> 하나의 어플에서 특정 이벤트 발생 시 자동으로, 발생된 이벤트정보를 가진
NSNotification의 하위클래스를 자동생성한다.
=> 개발자 입장에서는 발생시켜주는 NSNotification을 얻을 수 있다.
9. UIApplication
=> 하나의 어플을 관리하는 특별한 클래스
** singleton 패턴 : 객체를 딱 1개만 만들어서 사용하는 것
<참고> //deprecated : 더 좋은 메소드가 나왔으므로 지금 메소드는 사용을 자제하라는 말
10. UISlider
11. UISwitch
12. 이미지 보여주기
: UIImage => 이미지 파일을 저장
: UIIViewImage