레이블이 Objective-C인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Objective-C인 게시물을 표시합니다. 모든 게시물 표시

2014년 6월 30일 월요일

Objective-C에서 Swift로 넘어가기 #2

앞서 썼던 Objective-C에서 Swift로 넘어가기 위한 글에 이어서 이번에도 스위프트로 넘어갈 때 알아두면 크게 손해보지는 않는(?) 사항 몇 가지를 정리해 본다. 이번 글은 NSFileManager를 다루면서 겪었던 다수의 짜증(?) 해결 과정을 담고 있다.

2014년 5월 9일 금요일

[iOS/OSX] NSNotification, NSNotificationCenter 기초 가이드

말이 약간 어렵지만 '앱 내부에 시그널 패스가 연결되지 않은 곳에 메시지를 어떻게 던질 것인가' 라는 의문이 나온다면 NSNotificationCenter 를 쓰는 것이 답이다. 좀 더 단순히 이야기 하자면, 앱 내에서 아무 데서나 메시지를 던지면 앱 내의 아무데서나 이 메시지를 받을 수 있게 해 주는 것이 NSNotificationCenter 의 역활이다. 그리고 이 메시지 내용을 감싸는 껍데기가 NSNotification 오브젝트이다.

2014년 4월 26일 토요일

[Objective-C] 블럭 문법 (Blocks Programming)

최근 iOS나 OS X SDK Framework 를 보고 있다면 블럭에 기반한 메소드들이 점점 늘어나는 것 같다. 상황에 따라서 들여쓰기 레벨이 높아지거나 좀 불안한(?) 코드 모양이 나오는 듯 코드 리딩에 안좋은 모양새를 나타낼 때도 있지만, 그래도 여러 면에서 유용한 기능(?)이니 이 참에 메모를 남겨본다.

2014년 4월 24일 목요일

[iOS] CLGeocoder를 이용해 현재 위치의 주소 얻기

위도/경도 등의 위치 좌표를 이용해 현재 위치의 주소를 얻는 것을 Reverse Geocode 라고 부른다. 현재 iOS SDK 에서는 CLGeocoder 를 이용해 리버스 지오코딩을 할 수 있다.

[iOS] CoreLocation Framework를 이용한 현재 위치 찾기

iOS에서는 Mapkit을 이용하면 간단하게 현재 위치를 지동 상에 표시하는 것이 가능하다. 하지만 이건 MKMapView 를 사용 할 때의 이야기이다. 맵뷰를 사용하지 않고 현재 위치를 찾으려면 CoreLocation Framework를 이용해야 한다.

2014년 3월 13일 목요일

2014년 2월 27일 목요일

[Objective-C] 변수의 값이 변하는 것을 추적하는 방법

iOS에선 UIView의 크기가 변하면 자동으로 서브뷰(Subviews)도 그와 함께 리사이즈 되도록 하는 기능이 존재한다. 하지만 subview가 바뀌었을 때 그 상위의 UIView의 크기가 따라 바뀌는 등의 기능은 제공하지 않는다. 따라서 코드레벨로 좀 수동으로 구현하는 것을 먼저 생각하게 될 것이다.

이번 포스팅은 위 예제상황에서 좀 더 편한 코딩을 하기 위해 '변수 값의 변화를 추적하는 것'에 대한 글이다. (정확히는 UIView와는 직접적인 관계가 없고 Objective-C 의 Key-Value Coding 과 관련된 내용이다)

[참고] 이 글은 옛날 글입니다. 새 글은 'KVO (Key-Value Observing) 소개' 글을 참고 바랍니다.

2014년 2월 25일 화요일

[iOS] NSJSONSerialization 예제

옛날 옛적(?)에 iOS용 앱을 만들 때 JSON을 파싱하거나 인코딩 하려면 SBJson 이나 JSONKit 같은 외부 코드가 필요했다. 하지만 (제법 오래 전에) Cocoa 프레임워크에서 자체적으로 JSON에 관련된 프레임웍을 제공하기 시작했다. 그 이름하여 NSJSONSerialization 클래스이다.

[iOS] UIFont 예제

UIFont는 이름 그대로 폰트를 정의하는 클래스다. 수 많은 글자를 표시하는 UI 클래스에서 폰트를 명시하기 위해 사용하는 중요한 클래스이다.

2012년 12월 26일 수요일

Objective-C 에 관한 잡담

그렇게 오래는 아니지만 어쨌든 Objective-C를 수 년 간 이용해 왔다. 이제는 익숙해졌기 때문에 처음 봤을 때의 인상에 비해 호감이 가는 언어가 되었다. 심심해서 이 언어에 대한 썰을 한번 풀어본다.

이하 Objective-C는 한글로 '옵씨'로 줄여서 표현한다. 그리고 옵씨에 대한 설명이 아니다 보니 옵씨를 이제 시작하는 분들에게는 별 의미 없는 글일 것 같다.


2012년 7월 26일 목요일

Objective-C 2.0에서 property / synthesize

Objective-C의 OOP에서 특별한 문법이 있다면 바로 property와 synthesize라고 생각한다. 멤버변수(인스턴스)로의 접근 권한을 설정하고 이 멤버에 값을 세팅하는 규칙을 표준적인 방법으로 정의해 둠으로써 클래스의 사용 방법을 인터페이스(interface, 헤더의 역활?)화 해 준다.

2012년 7월 17일 화요일

NSException 디버깅

XCode에서 디버깅 모드로 테스트 중인 앱이 뭔가의 오류로 죽었다. 그런데 죽은 곳을 알 수가 없을 때가 있다. 디버거의 트레이스는 main을 가리키고 있는 경우가 많다. 이 경우 로그창의 메시지를 이용해 간접적으로 원인을 알 수도 있지만 실제 원인은 알 수 없는 경우도 많다.

2012년 6월 18일 월요일

Objective-C의 레퍼런스 카운트는 왜 필요한 건가

다른 언어를 사용하던 이가 Objective-C 를 접했을 때 가장 생소해하며 혹은 헷갈려 하는 부분이 바로 레퍼런스 카운트 개념이다. 이 글은 레퍼런스 카운트 개념이 왜 필요한지에 대한 것이다. 다만 도움이 될지 이해가 될지 잘 모르겠다. ;-)

Xcode ARC, 약인가 독인가

ARC(Automatic Reference Counting)라는 기능은 XCode 4 들어서 보여준 새로운 기능이다. Objective-C에 정의된 요소이긴 하지만 사실상 Objective-C를 사용하게 되는 곳은 현재로썬 Xcode 뿐인 것 같으니 그려러니 생각하자.

2012년 5월 7일 월요일

iOS 앱 디렉토리 이야기

iOS앱은 데이터를 기록하거나 읽기 위한 몇 가지 디렉토리를 가지고 있다. 다들 알겠지만 이 디렉토리들은 샌드박스로써 해당 앱에서만 접근이 가능하다. 이 글에서는 이 디렉토리의 용도를 간략히 적어본다.

참고로, 이 글에서 디렉토리 이름에 AppHome 이라는 이름은 그냥 앱 디렉토리를 의미한다. 각 앱이 아이폰이나 아이팟, 아이패드 등에 설치된 디렉토리를 의미한다. 무시해도 된다는 의미이다.

2012년 4월 19일 목요일

[iOS] 특정 코드를 비동기로 실행시키기

특정 API를 호출했는데 이 API가 작업시간이 오래 걸린다면 UI가 그 동안 멈추는 현상이 발생한다. 예를 들자면 대용량 파일을 읽거나 쓸 때 그 동안은 UI가 동작하지 않는 경우가 있다. 이 문제를 회피하려면 오래 걸리는 작업을 비동기(Asynchronous)로 처리하도록 할 수 있다.

이런 경우를 위해서 애플이 만든 GCD(Grand Central Dispatch)라 불리우는 기술(개념?)을 이용 할 수 있다. 쓰레드로 분리된 큐에 작업 내용을 넣어서 이를 차례대로 실행시키는 방식으로, 백그라운드 프로세싱과 병렬 처리를 한방에 해결 할 수 있도록 해 주는 고마운 기능이다.