콘텐츠로 건너뛰기
Home » Development » iOS - Cocoa Touch » Page 5

iOS – Cocoa Touch

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

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

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

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

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

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

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

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

[iOS 앱 만들기 002] 윈도우 객체

iOS앱에서 무슨 윈도타령인가? 하지만 실제로 그렇다. iOS앱은 한 번에 한 개 앱이 화면을 꽉 채운 상태로 실행된다. 데스크톱용 앱과는 달리 화면에는 항상 1개의 앱만 표시되기 때문에 윈도의 테두리나 제목막대 같은 게 표시되지 않고 “스크린 위에 뷰가 있는 형태”가 되는데…. 스크린에 표시되는 뷰의 계층 구조에서 최상위 뷰의 역할을 할 고정된 객체가 필요한데, 이 역할을 윈도 객체가 한다. 따라서 윈도 객체(UIWindow)는 UIView의 서브 클래스이며, 주로 앱 델리게이트의 프로퍼티로 접근하게 된다.

더 보기 »[iOS 앱 만들기 002] 윈도우 객체

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

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

[iOS_OSX] 웹 컨텐츠에 접근하기

URL Loading System 파운데이션 프레임워크 안에는 URL 기반으로 네트워크상에 위치한 리소스에 접근하는 도구들이 정의되어 있다. 네트워크를 통한 리소스 접근은 웹 브라우저를 생각해보면 되는데, 서버에 요청을 보내어 그 요청에 맞는 결과물을 전송받게 되는데, 이러한 일련의 과정을 제어하는 몇 가지 클래스를 묶어서 URL Loading System이라고 한다. 물론 파운데이션에는 이 URL Loading System 외에도 인증, 캐싱, 프로토콜을 제어할 수 있는 추가적인 클래스들이 정의되어 있어서 인터넷 혹은 네트워크와 관련된 기능들이 잘 추상화 되어 있다. 따라서 특별한 경우가 아니면 BSD소켓 프로그래밍까지는 잘 몰라도 네트워크 기능을… 더 보기 »[iOS_OSX] 웹 컨텐츠에 접근하기

[Cocoa] NSFetchedResultsController

코어데이터와 UITableView와의 연결

지금까지 몇 개의 예제를 통해 코어데이터를 사용해서 일련의 데이터를 디스크에 읽고 쓰며, 이를 관리하는 방법에 대해 살펴보았는데, 이런 작업을 보다 쉽게 만들어주는 컨트롤러가 있었으니, 바로 NSFetchedResultsController이다.
이 클래스는 코어데이터의 컨텍스트를 기반으로 저장소로부터 조건에 맞는 객체를 읽어들여서, UITableView의 데이터소스 메소드에서 쉽게 사용할 수 있는 형태로 제공한다. 또한 읽어온 객체에 대해 추적 기능을 가지고 있어서 managed object에 어떤 변경이 발생할 때 이를 감지하여 적절하게 테이블 뷰에서의 변경을 만들어낼 수 있다.더 보기 »[Cocoa] NSFetchedResultsController

UIImage를 카메라롤에 저장하기

UIImage를 아이폰의 카메라롤에 저장하는 과정은 사실 간단하다. 카메라롤은 내부에 사진을 정리/저장할 수 있는 체계를 가지고 있는 시스템이고, 여기에 특정 이미지를 저장하겠다는 함수를 호출하는 것으로 해당 동작을 처리할 수 있다. UIImageWriteToSavedPhotosAlbum()이라는 이름을 잘못쓰기 쉽게끔 지어놓은 UIKit 자유 함수가 여기에 사용된다. 이 함수의 원형은 다음과 같다. void UIImageWriteToSavedPhotosAlbum( UIImage* image, id completeionTarget, SEL completionselector, void* contextInfo ); 이 함수는 넘겨 받은 이미지를 카메라롤에 저장하고, 저장 작업이 완료되면 지정된 타깃에 지정된 메시지를 보낸다. 각 파라미터들은 원형에서도 짐작할 수 있겠지만, 다음과 같다. image :… 더 보기 »UIImage를 카메라롤에 저장하기

[UIKit] UIView를 이미지로 캡쳐하기, UIImage를 파일로 만들기

UIView를 UIImage로 캡쳐하는 방법 NSView를 이미지로 캡쳐하는 방법에는 여러가지가 있는데, 캡쳐한 이미지를 파일로 저장하기 간편하게 쓰는 방법은 NSBitmapImageRep 클래스를 사용해서 현재 포커스된 뷰의 영역을 바로 캡쳐하는 것이다. (그 외에 PDF데이터를 바로 추출하거나, 뷰의 CALayer를 NSImage 상에서 렌더하는 방법등 여러 가지 방법이 있을 수 있다.) 코코아 터치에서는 NSBitmapImageRep 와 같은 클래스가 없다. 대신에 비트맵 이미지를 그래픽 컨텍스트에서 얻을 수 있다는 점을 이용하여 다음과 같은 방법을 쓸 수 있다. -(UIImage*)captureView:(UIView *)theView { UIGraphicsBeginImageContextWithOptions(theView.bounds.size, theView.isOpaque, 1.0); ; UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext(); return UIImage; }… 더 보기 »[UIKit] UIView를 이미지로 캡쳐하기, UIImage를 파일로 만들기

[iOS] UIScrollView 사용법

업데이트 UIScrollView를 Swift에서 사용하는 방법에 대한 (적어도 이 글 보다는 나은) 새 버전을 참고하세요. UIScrollView는 gesture recognizer를 내장하여 실제 뷰 영역보다도 큰 영역을 스크롤하여 내용을 볼 수 있도록 해주는 클래스이다. 사진 앨범 앱의 사진 보기 화면에서 이 스크롤뷰가 사용된다. (카메라롤의 사진 목록 역시 스크롤뷰로 구현되어 있다.) 스크롤뷰는 관성 이동은 물론 내부 컨텐츠를 확대/축소하는 방법을 아주 간단히 처리할 수 있어 주로 이미지와 관련된 화면에서 상당히 유용하게 활용할 수 있다. 스크롤뷰를 사용하는 방법은 UIViewController와 거의 유사하다. 인스턴스를 생성해서 하위뷰를 추가해주면 된다. 스크롤뷰의… 더 보기 »[iOS] UIScrollView 사용법