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

2015년 6월 30일 화요일

Swift 와 C 포인터(Pointer)

Swift 는 문법으로도 다양한 기능을 제공하는 고급 언어이다. 하지만 고급 언어이기 때문(?)에 최적화된 C 라이브러리를 종종 사용해야 할지도 모르고 그럴 때는 C의 포인터를 함께 사용해야 할 가능성도 있다. 그래서 Swift의 포인터 처리에 대해 간단히 정리하려 한다.

참고로 이 글은 Swift 3 가 등장하기 이전에 쓰여졌다. Swift 3 에서의 포인터는 [Swift 속의 C Pointer 이야기 - 시작] 글을 참고하자.

2015년 5월 8일 금요일

[Xcode] 플랫폼 구분 전처리기(Preprocessor)

플랫폼(Platform), 즉 현재 프로젝트의 타겟 OS가 OSX 이냐 아니면 iOS냐를 구분하는 전처리기를 정리한다. 기존의 Swift 글에서도 정리했던 적이 있지만 Objective-C 코드에서도 종종 사용되기에 별도로 정리한다.

2015년 2월 17일 화요일

Swift - Lazy Stored Properties 좀 더 살펴보기

이미 Swift의 프로퍼티(Properties)에 관한 내용 중 '나중에 생성되는 프로퍼티(Lazy Stoed Properties)' 항목에서 간략하게 설명했었지만, 조금은 더 실생활(?)에 도움이 되는 예제가 필요하다는 생각이 들었다. 그래서 이 lazy 프로퍼티를 약간 더 자세히(?) 정리해 본다.

2015년 2월 11일 수요일

Swift 1.2 에서 바뀌는 것들

아직 Xcode 6.2가 정식으로 릴리즈 되지도 않았는데 벌써 Xcode 6.3 베타가 나오는 어이없는(?) 상황이 이어지고 있다. Xcode 6.3에서는 드디어 Swift가 업그레이드 되어서 1.2가 들어가게 되는데 이와 관련된 변화점을 살펴보고자 한다.

가급적이면 모든 내용을 다루고 싶지만 이해가 안되는 것도 많고 별로 몰라도 되는 것도 있어서 중요하다 싶은 내용만 다룬다. 이번 업데이트는 크게 Swift, Xcode 그리고 Objective-C 세 가지 파트로 나뉘어진다.

2015년 1월 22일 목요일

NSScanner 기초​

NSScanner는 문자열(String, NSString)에서 값을 스캔하기 위한 클래스이다. 아래 공식 레퍼런스에는 Abstract Superclass 라고 소개되어 있긴 하지만 예상외로 별도로 구현할 필요 없이 그대로 써도 된다.

2015년 1월 20일 화요일

[Objective-C] ARC - 브릿지 이야기

Swift가 뜨고 있는(?) 현재로썬 그다지 자주 쓸 일은 없을 것 같긴 하지만, Objective-C ARC의 Toll-Free Bridged Types에 대한 이야기를 써 본다.

2015년 1월 12일 월요일

[Objective-C] performSelector에서 메모리 릭(leak) 경고가 뜬다?

오랫만에 Objective-C 전용 글. 구시대(?) 방식으로 performSelector를 쓰는 경우 요즘은 아래와 같은 식의 빌드 경고가 발생 할 수 있다.

2015년 1월 5일 월요일

Swift Memory Management #1 기초 개념

소프트웨어를 만들 때 메모리 관리라는 건 언어에 따라 중요성의 차이가 다르긴 하다. 하지만 왠만해서는 신경써서 작업해야 하는 것이 메모리 관리이다. 얼마나 적거나 많은 메모리를 사용하는지, 또는 어느 시점에서 메모리가 해제되면 효율적인지 등등 신경써야 할 부분이 제법 많다.

이 글은 Swift의 메모리 관리에 대한 기본적인 지식 시리즈 첫 번째로, ARC(Automatic Reference Counting)의 전제가 되는 레퍼런스 카운트(Reference Count) 개념부터 정리한다. 직접적인 Swift 에 대한 내용이 아니기 때문에 꼭 알아야 할 필요는 없을지도 모르겠다.

2015년 1월 3일 토요일

Xcode Resources

이 글은 이 블로그에서 Xcode와 관련된 글의 링크를 모은 길찾기용 글이다.

Core Foundation Resources

글 제목이 Core Foundation 으로 한정하고 있는 것 같지만, 정작 실체는 iOS(+ Cocoa Touch) 앱 개발과 OS X(+ Cocoa) 개발에 공통적인 글 링크를 정리하고 있는 글이다. :-)

과거 글은 Objective-C 위주로 쓰여져 있는 점에 주의하자.

macOS & Cocoa Development Resources

이 글은 본 블로그에서 macOS용 앱 개발 및 Cocoa 프레임워크 전반에 대한 글 링크를 별도로 정리한 길찾기용 글이다. 관련된 내용이 업데이트 되면 (귀찮지 않으면) 이 글에도 업데이트 할 예정이다.

iOS and Cocoa Touch Resources

이 글은 본 블로그에서 iOS 앱 개발 전반 및 Cocoa Touch 프레임워크에 대한 글의 링크를 별도로 정리한 길찾기용 글이다. 관련 글이 업데이트 될 때 마다 이 글에도 해당 항목을 추가할 예정이다.

2014년 12월 4일 목요일

NSView의 좌표계(Coordinate System) 뒤집기

NSView 클래스를 상속받아서 커스텀한 뷰를 만드는 상황을 가정하자. 이 뷰는 인터페이스 빌더가 아닌 코드로 UI를 구성한다. 그런데 코드로 생성하는 자식뷰의 Y좌표를 0으로 하니 제일 바닥에 자식뷰가 붙었다. 이건 iOS의 UIView 와 비교해서 위 아래가 반대로 뒤집한 상황이다.

[참고] 이 글은 NSView Cheatsheet 글에 요약해서 정리되어 있다.

2014년 11월 26일 수요일

Swift/Objective-C 오브젝트 직렬화(Serialization)

직렬화(Serialization) 라는 표현은 대개 OOP언어에서 특정 클래스 오브젝트를 파일로 저장하거나 파일에서 읽어들일 때, 혹은 네트워크 등으로 전송하거나 받거나 하기 위해 특수하게 가공하는 것을 의미한다. Objective-C나 Swift에서는 이 부분에서 인코드(Encode), 디코드(Decode) 용어를 사용한다.

2014년 11월 19일 수요일

[OSX] 알림센터를 이용해 알림 띄우기

이번 글은 OS X의 알림을 표시하는 방법에 대한 것이다. 알림(Notification)이라 표현했는데, 이 알림 기능은 OS X Lion 에서 추가된 OS X 알림 센터를 의미한다.


iOS 8 이상에서 LocationManager 가 작동 하지 않는 경우

iOS 8 부터 또 새로운 보안 강화안이 마련된 것 같다. 이번 포스팅은 CLLocationManager를 이용하고자 할 때의 변동사항을 정리한다.

2014년 11월 11일 화요일

[Swift/ObjC] 딜레이 이후 실행하기

특정 사유로 특정 코드를 특정 시간 이후에 실행시켜야 할 경우가 있다. 이유야 어쨌든, 이렇게 특정 시간(딜레이, Delay) 이후에 코드를 실행시키도록 하는 코드를 알아보자.

2014년 8월 20일 수요일

Xcode 6 Beta 6 에서 발생한 링크에러 및 해결

Xcode 6 Beta 6를 사용하면서 약간의 변경점 때문에 Swift 코드를 일부 수정하고 빌드를 했더니 링크 단계에서 에러가 발생했다. 이번 베타에서도 뭔가 깊숙한 곳에서 바뀐게 있나 하고 답답해 했었다. 다행히도 해결책이 있어서 글로 정리해 본다.

2014년 8월 11일 월요일

Objective-C 프로젝트에서 Swift 코드 사용하기

앞서 Swift 프로젝트에서 Objective-C 코드를 사용하기에 관한 글을 적으면서 '과연 스위프트 모듈을 Objective-C 프로젝트에서 쓸 일이 있을까' 라고 적긴 했었는데, 실상은 왠지 쓸 수도 있을 것 같다는 느낌이었다. 그래서 관련 내용을 글로 정리해본다.

2014년 7월 21일 월요일

Swift 프로젝트에서 Objective-C 코드를 함께 사용하기

여러가지 이유가 있겠지만 두 가지 이상의 언어로 프로젝트를 진행하는 것도 종종 있다. 예를 들어 특정 언어로 작성된 써드파티 라이브러리를 가져다 쓴다거나 혹은 특수한 퍼포먼스 로직이 필요할 경우 등등이다. Xcode 에서는 스위프트(Swift) 프로젝트에서 C나 Objective-C 언어로 코딩된 파일을 함께 빌드하는 것이 가능하다.

이 글은 스위프트(Swift)를 주 언어로 설정한 프로젝트에서 Objective-C 코드를 함께 사용하는 방법을 기술한다. 반대로 Objective-C를 주 언어로 사용하는 프로젝트의 경우는 방법이 다르므로 관련글을 참고하자.