콘텐츠로 건너뛰기
Home » Development » Objective-C » Page 6

Objective-C

[Cocoa] Undo/Redo 구현하는 법

Undo 구현하기

코코아앱 (Foundation 명령줄 도구에서도 사용할 수 있다)에서 실행취소(Undo) 기능을 구현하는 방법에 대해 알아보자. 실행 취소를 구현하는 방법은 “이전 상태를 그대로 저장”하였다가 되돌리는 방법을 생각해 볼 수 있는데, “이전 상태”에 대한 명확한 범위를 정하기가 생각보다 쉽지 않다. 또한, 앱이 나중에 확장, 변형된다면 “상태”를 매번 업데이트해야 하고 이는 관리나 유지보수 측면에서도 그리 바람직한 방법이 아니다.더 보기 »[Cocoa] Undo/Redo 구현하는 법

iOS에서 SQLite3 사용하는 방법 (Objective-C)

Swift3 버전에 대한 SQLite3 사용법은 이 포스트를 참고하시라.

예전에 쓴 글이 있기는 하지만, 그냥 요리법처럼 쓴 글이기도 하거니와 소스코드에서 뭔가 글자가 빠지는 등(syntax highlighter를 안써야 겠지만 기존 글 고치기가 귀찮아…) 문제가 많아 내용을 보충해서 다시 작성.
애플은 SQLite3를 직접 인터페이스하는 것보다는 코어데이터를 사용하라고 권장하고 있고, (실제로 있다가 빠진 것인지는 알 수 없으나 그런 주장을 하는 사람들이 종종 있다) 애플 개발자 문서에서도 관련 내용을 내렸다고 한다. (하지만 이는 사실이 아닐 거라 생각한다. 왜냐면 iOS에서 SQLite3를 인터페이스 하는 부분은 전적으로 libsqlite3를 사용하는 것이고, 이에 대한 문서는 SQLite3 홈페이지에 가면 있기 때문이다) 더 보기 »iOS에서 SQLite3 사용하는 방법 (Objective-C)

[iOS 앱 만들기 003] 뷰 컨트롤러 기초

지난 시간에 생성한 윈도 객체에 대해 뷰 컨트롤러를 인스톨(!)하는 방법을 잠시 소개했다. 물론, 화면의 전환이 없고 화면 내에서 사용자 터치에 반응하는 버튼이나 내용의 변경이 필요한 부분이 별로 없다면 뷰 컨트롤러는 필요하지 않을 수도 있다. (앱 델리게이트 등의 객체가 그 역할을 대신하면 되니까) 하지만 그렇게 간단하기만한 앱은 그다지 쓸모가 없는 예제인 경우가 많으니, 보통의 경우에는 뷰 컨트롤러가 필요하다.

더 보기 »[iOS 앱 만들기 003] 뷰 컨트롤러 기초

[iOS] 코어데이터를 활용한 간단 메모장 – 다시 쓰기

작년인가 썼던 코어데이터를 사용해서 간단한 메모앱을 만드는 예제를 설명하는 글이 있었는데, 시간이 지나서 살펴보니 댓글도 좀 달릴 만큼 관심을 받았는데…. 지금에와서 읽어보니 글(글에서 소개하는 코드가)이 좀 엉망이라 부끄러운 관계로, 조금 더 간단히 써보고자 한다. 코어 데이터와 관련된 내용은 다루지 않고 (이 부분은 시간이 나면 다시 따로 정리하기로 하고) 코드에 대해서만 집중해보도록 한다. 이번 글의 목표는 중구난방이 아닌 보다 깔끔한 구현을 목표로 한다. 더 보기 »[iOS] 코어데이터를 활용한 간단 메모장 – 다시 쓰기

앱델리게이트 이해하기 (iOS앱 만들기 – 01)

iOS앱이 시작되는 과정 Objective-C로 앱을 제작한다면, Objective-C가 기본적으로 C의 확장형태이며 내부적으로는 C와 동일하게 작동한다는 것을 알고 있을 것이다. 따라서 Objective-C로 앱을 제작했다면 예외 없이 int main() 함수가 프로그램 전체의 진입점이자 본체가 될 것이고, 이 함수는 iOS 앱 프로젝트의 메인이 되는 main.m 파일에 정의되어 있다. 다만, 99%의 iOS앱이 앱의 론칭 방식까지 변경할 이유는 없기 때문에 우리가 주로 코드를 만지는 부분은 이 곳이 아니라, 앱의 델리게이트부터 시작한다. 하지만 프로젝트 네비게이터에서 잘 뒤져보면 어디엔가 main.m 파일은 존재할 것이다. iOS앱은 UIApplication 클래스의 객체로 표현된다.… 더 보기 »앱델리게이트 이해하기 (iOS앱 만들기 – 01)

Objective-C의 선언 프로퍼티 (Declared Property)에 대해

Objective-C의 객체 인스턴스에 어떠한 변수 값을 포함하고자 한다면 클래스 내에 인스턴스 변수를 선언하고, 여기에 값을 저장할 수 있다. (흔히 애플 문서등에서는 이런 인스턴스 변수를 ivar라 한다.)
기본적으로 객체의 내부에서 선언되는 인스턴스 변수는 private하며 객체의 외부에서는 내부의 인스턴스 변수값에 액세스하는 것이 차단된다. 따라서 객체의 외부에서 인스턴스 변수의 값을 읽거나 쓰기 위해서는 클래스가 해당 인스턴스를 읽게하거나, 쓰게 해주는 API를 제공해야 한다. 이렇게 객체가 자신의 내부 속성값에 대해 읽거나 쓰게 하기 위해 제공하는 메소드를 접근자(accessor) 메소드라고 한다.
더 보기 »Objective-C의 선언 프로퍼티 (Declared Property)에 대해

UIActionSheet

액션시트는 아이폰의 화면 아래에서 밀려 올라와 여러 선택 지 중 하나를 선택할 수 있는 옵션을 제공하는 기능이다. 물론 iOS는 UIAlertView도 제공하고 있는데, 액션 시트는 보다 넓은 공간을 사용할 수 있고 선택지를 많이 넣을 수 도 있다. UIAlertView는 웹에서의 alert,confirm,prompt등의 기능에 대응되는 개념이고, 액션 시트는 보다 커스터마이징한 개념이라고 봐도 되겠다. 주로 “삭제하기”등 되돌릴 수 없는 액션에 대해 최종 확인을 위한 UI로 많이 쓰이고, 그외에 특정 액션을 수행할 때 선택지를 제공하는 경우에 쓰인다.

더 보기 »UIActionSheet

[Cocoa] Nib 파일로부터 객체 읽어오기

Nib 파일

nib파일은 인터페이스 빌더에서 생성한 객체들을 직렬화하여 저장하는 파일로, UI를 구성하는 객체들(편의상 인터페이스 객체라 부르겠음)을 저장하게 된다. 이 파일에는 인터페이스 빌더를 통해 추가한 인터페이스 객체들(창, 뷰, 버튼 컨트롤 등)과 이러한 객체들의 세부 설정(스타일, 색상, 폰트 등), 그리고 객체들 간의 연결(connection)정보가 모두 포함된다. 이 모든 인터페이스 객체의 초기화와 설정은 프로그래밍을 통해 코드 상에서 수행할 수 있지만, 인터페이스 빌더를 사용하면 시각적으로 결과물을 즉시 확인할 수 있고 작성해야 하는 코드의 양을 엄청나게 줄일 수 있다. (GUI를 코드로 초기화하는 것은 상당한 양의 코드를 작성해야 하는 큰 일이다.)
더 보기 »[Cocoa] Nib 파일로부터 객체 읽어오기

(Cocoa) NSAlert 팝업 사용하기

NSAlert는 프로그램 실행 중 발생한 어떤 예외 상황을 사용자에게 알리고 가능한 경우 그에 대한 적절한 처리 방법을 사용자로 하여금 선택할 수 있게 하는 대화상자이다. 자바 스크립트의 alert 창과 비슷한데, NSAlert는 훨씬 더 다양한 속성과 하부 기능을 사용해서 confirm 이나 prompt와 같은 기능도 동시에 수행할 수 있게 한다.

더 보기 »(Cocoa) NSAlert 팝업 사용하기

[Cocoa Touch] 뷰 트랜지션 애니메이션 구현하기

트랜지션(transition)은 뷰가 갑자기 나타내거나 없어지거는 것과 관련하여 보다 나은 사용자 경험을 제공할 수 있도록 해준다. 트랜지션 역시 뷰 애니메이션이므로 UIView의 애니메이션 메소드를 사용하거나 코어 애니메이션을 사용하여 구현하는 두 가지 방법 중 하나를 선택할 수 있다. UIView 애니메이션으로 뷰 트랜지션 구현 UIView 애니메이션에서 지원하는 트랜지션은 크게 두 가지로 나뉜다. 기존의 뷰의 서브 뷰들을 바꾸기 – 비교적 작은 뷰의 변경에 속한다. 뷰를 새로운 뷰로 대체하기 – 화면상에서 변경이 일어나는 영역이 많을 때 뷰 트랜지션은 뷰 컨트롤러에 의한 트랜지션과는 다르다. 뷰 컨트롤러 트랜지션은… 더 보기 »[Cocoa Touch] 뷰 트랜지션 애니메이션 구현하기