본문 바로가기

앱개발

applicationDidFinishLaunching iPhone SDK4로 넘어오면서 코드가 조금 바뀐 것이 있다. 바로 ProjectNameAppDelegate.m에서 활용도가 높았던 applicationDidFinishLaunching이 그 주인공이다. 어떻게 바뀌었는지 살펴보자. 구 버전의 SDK같은 경우는 새로 프로젝트를 생성하게 되면 다음과 같은 메소드를 제공할 것이다. - (void)applicationDidFinishLaunching:(UIApplication *)application { //Override point for customization after app launch [window makeKeyAndVisible]; } 다른 메소드(viewDidLoad, viewWillAppear)들과 비교했을 때 일관성 있는 작명 방식이다. 하.. 더보기
2010.08.11 - coredata 이해 코어 데이터는 객체를 관리하는 것이다. * 기능 - 사용자 정의 객체를 읽고 저장할 수 있는 기능 코어 데이터는 엔티티 기술문 (Entity description)에 기술된 사용자 객체를 읽고 저장할 수 있습니다. 또한 객체간의 관계, 다른 버전의 데이터로 이전, 필수 및 선택 필드, 그리고 필드값 검증(filed validation)도 처리할 수 있습니다. - 데이터를 다양한 방법으로 저장 가능 코어 데이터는 데이터가 실제로 어떻게 저장되는 지 신경 쓰지 않도록 해줍니다. 코어 데이터에 어떻게 저장하는지만 지정하면, 앱에서는 SQLite 데이터베이스에 저장하는지 임의의 이진 파일에 저장하는지 신경쓰지 않아도 됩니다. - 메모리 관리 및 실행취소(undo)와 실행복귀(redo) 지원 코어 데이터는 메모리.. 더보기
기본적인 상호작용 * Outlet 컨트롤러 클래스는 아웃렛이라 불리는 특별한 인스턴스 변수를 사용하여 nib(xib) 파일 안의 객체를 참조할 수 있다. 아웃렛은 nib 파일 내부의 객체를 가리키는 포인터라 생각하면된다. - 예를 들어 인터페이스 빌더에서 텍스트 레이블 하나를 생성하였고 코드 내부에서 레이블 텍스트를 변경하려 한다고 하면, 아웃렛을 하나 선언하고 아웃렛이 레이블 객체를 가리키게 함으로써 코드 상에서 아웃렛을 사용하여 레이블의 텍스트를 변경할 수 있다. * Action nib 파일 안의 인터페이스 객체는 컨트롤러 클래스의 특정 메서드가 호출되도록 설정할 수 있다. - 예를 들어 사용자가 버튼을 눌렀을 때 코드 안에 특정 액션 메서드가 호출될 것이라고 인터페이스 빌더에게 알려줄 수 있다. * 아웃렛은 IBOu.. 더보기
사용자 인터페이스 * 인터페이스 빌더 중 Library 항목에 Image View - Drawing 체크박스 Opaque (불투명 항목) : 아이폰 OS에게 이 뷰 밑에 있는 것은 그릴 필요가 없고 컨트롤을 그릴 때 몇 가지 방법으로 최적화를 해서 속도를 높일 수 있게 한다. Hidden (숨김) : 사용자는 그 컨트롤을 볼 수 없다. Clear COntext before Drawing : 실제 컨트롤을 그리기 전에 컨트롤러의 전체 영역을 모두 지운 뒤에 그리게 된다. Clip Subviews (하위뷰 자르기) : 부모 영역 안의 하위 뷰만 그린다. 체크하지 않는 것이 기본 값. Autoresize Subviews : 뷰의 크기가 변경되면 하위뷰의 크기도 변경되도록 설정하는 기능. - Interaction 상호작용 Use.. 더보기
자동회전과 자동크기 조절 * 세로보기 모드 (portrait - 길고 얇은) / 가로보기 모드 (landscape - 짧고 옆으로 넓은) * 세로보기 모드에서 뷰는 너비 320 px / 높이 460 px (상태 표시줄이 없다면 높이는 480 px) * 가로보기 모드에서 너비는 480 px / 높이 300 px (상태 표시줄이 없다면 높이는 320 px) * 애플리케이션에서 회전 기능을 관리하는 3가지 기능 - autoSize 속성으로 회전 처리 하기 - 회전할 때 뷰 재구성하기 - 뷰 전환하기 ( 세로보기 모드 / 가로보기 모드 ) * autoSize 속성으로 회전 처리하기 - 아이폰에서 AutoSize 속서을 사용하면 중력센서를 사용하여 기기 회전에 따른 처리를 할 수 있다. 클래스명 ViewController.m 에서 sho.. 더보기
멀티뷰 애플리케이션 * 탭바 / 툴바 - 탭바 : 두 개 이상의 대상 중 단 하나만 고를 때 사용한다. 실제 애플리케이션에서 탭바는 두 개 이상의 컨텐츠 뷰를 선택하기 위해서 사용 - 툴바 버튼과 다른 특정 컨트롤을 담을 수 있지만 상호배타적이지 않다. 일반적인 작업을 수행하는 버튼을 나타내기 위해 사용된다. 툴바 버튼은 다른 아이폰 컨트롤과 다르다. 툴바 버튼은 오직 하나의 액션만 지원하고 다른 아이폰 컨트롤의 Touch up inside 이벤트 같이 적절한 순간에만 그 액션을 유발한다. * -(void)viewDidLoad - nib이 로드 될 때 호출되는 UIViewController 의 매소드이다. viewDidLoad 메서드는 상위 클래스에 정의되어 있고 뷰의 로딩이 끝났을 때 호출되기 때문에 뷰의 로딩 완료시점을.. 더보기
탭바와 피커 * 델리게이트와 데이터 소스 - 피커는 여러 가지 작업을 델리게이트에게 위임한다. 그 중에서도 가장 중요한 것은 각 행과 해당 행에 속한 컴포넌트 중에서 실제로 무엇을 그릴지를 결정하는 일이다. 피커는 델리게이트에게 문자열 또는 주어진 컴포넌트의 특정 위치에 내용을 그리기 위한 뷰를 요청한다. - 데이터 소스는 피커에게 몇 개의 컴포넌트와 몇 개의 목록이 각각의 컴포넌트를 구성하고 있는지 알려준다. 데이터소스는 델리게이트와 유사한 방식으로 동작하지만, 매서드가 미리 정해진 시간에 호출된다는 점이 다르다. * 탭바 아이콘 - 아이콘은 24 * 24 픽셀 크기여야 하고, PNG 포멧으로 저장되어야 한다. 또 아이콘 파일은 투명 배경을 가지고 있어야 한다. 일반적으로 중간 크기의 회색 아이콘이 탭바에서 가장 .. 더보기