NSString으로 된 path를 FSSpec으로 바꾸기

이제 거의 모든 것이 Cocoa/Objective-C로 넘어 왔지만, 아직도 상당 부분이 Carbon에 의지하는 것들이 있다. Core Foundation이란 이름으로 Carbon의 상당 부분이 존재하는데, 재미난 것이, Apple의 가장 중요한 프레임워크 중의 하나가 이것에 굉장히 의지를 많이 한다.

바로 QuickTime이다.
Lion에서는 AV Foundation이 old QuickTime을 대치할 것으로 보이지만, 얼마만큼 대치할 수있는지는 아직 살펴보지 않았으며, 하루 아침에 QuickTime을 없애기가 과연 쉬울까 싶다.
하지만 내 생각에 QuickTime은, 적어도 Carbon에 기반한 QuickTime은 없어져야 한다.

Carbon API 자체는 나름 괜찮은데 디자인 상에 기본적인 문제가 있다. 뭐 하나 쉽게 해 보려고 해도, 이런 저런 다른 함수들의 도움을 받아야 하는 경우가 많다. 특히 File을 열려고 할때, FSpec이나 FSRef로 된 것들을 상호 변화시키는데 필요한 함수를 찾기 힘들다.
이를테면 MakeFSRef_fromFSSPec() 과 같은 함수가 있어야 할텐데, 도무지 찾을 수가 없다. 그런데 가만히 보면 없지는 않다.

status = FSPathMakeRef( fileName, &theFSRef, &isDirectory );

err = FSGetCatalogInfo(&theFSRef, kFSCatInfoNone, NULL, NULL, &theFSSpec, NULL);

위에서 보듯이 FSGetCatalogInfo()를 이용하면 주어진 FSRef를 FSSpec으로 바꿀 수있다.

어쨌거나, FSSpec과 같은  file reference용 구조체는 이미 deprecated가 된지 오래고, Apple은 FSRef를 이용하라고 이미 QuickTime 7때부터 말해왔다. 하지만 FSSpec을 안쓸 수가 없는게 QuickTime 함수들 중 꽤 많은 수가 FSSpec을 인자로 요구한다.

이런 상황에서 굳이 써야 한다면, 쓰긴 해야 하는데, 아마 가장 많은 사용처가 file path에서 FSSpec을 만드는게 아닐까 한다. 여기엔 좀 이런 저런 문제가 있는데, 마침 이것에 대해 소스코드로써 잘 설명해 놓은 것이 있어 여기에 기록해 두기로 한다.

CocoaDev:FSMakeFSSpec

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: