본문 바로가기

iOS

NSLog, CFShow의 차이

728x90
반응형
SMALL

NSLog, CFShow의 차이

NSLog

NSLog는 Foundation 프레임워크의 함수 중 하나로, Objective-C나 Swift 언어에서 사용할 수 있습니다. 출력하고자 하는 문자열과 변수 등을 포맷 문자열에 포함시켜 출력할 수 있으며, 로그 메세지를 함께 콘솔에 출력됩니다. 

CFShow

CFShow는 Core Foundation 프레임워크에서 제공하는 함수 중 하나로, C 언어나 Objective-C 언어에서 사용할 수 있습니다. 주어진 Core Foundation 객체의 값, 타입 및 속성 등을 콘솔에 출력합니다. NSLog와 달리 **포맷 문자열을 지원하지 않습니다.

즉, NSLog는 문자열 포맷팅이 가능한 대신 출력 속도가 느리고 CFShow는 문자열 포맷팅이 불가능하지만 출력 속도가 빠릅니다. 또한 CFShow는 주로 디버깅 용도로 사용됩니다. 

 

**포맷 문자열이란?

포맷 문자열은 문자열 내에서 특정한 형식을 가진 값을 표현하기 위해 사용되는 문자열입니다. 일반적으로 포맷 문자열은 % 기호와 형식 지정자를 조합하여 표현됩니다. 예를 들어, "%d"는 정수형 값을 표시하는 형식 지정자입니다. 이러한 포맷 문자열을 사용하면 프로그래머는 값을 형식화하여 출력할 수 있습니다. printf() 함수나 NSLog() 함수에서 포맷 문자열을 사용할 수 있습니다. 포맷 문자열은 출력된 값의 가독성을 높이고, 필요한 경우 출력하는 값의 정확성을 보장합니다.

 

 

정리

  1. print() : Swift의 표준 출력 함수로, 문자열, 숫자, 배열, 딕셔너리 등 Swift 언어에서 지원하는 모든 타입을 출력할 수 있습니다. 포맷 문자열을 지원하며, 변수나 상수를 쉽게 출력할 수 있습니다. 일반적으로 디버깅용으로 많이 사용됩니다.
  2. CFShow() : Core Foundation에서 제공하는 함수로, 주어진 Core Foundation 객체의 값을 출력합니다. C 언어나 Objective-C 언어에서 사용됩니다. **CFStringRef 타입 등 Core Foundation에서 사용되는 특수한 타입을 출력할 수 있으며, 포맷 문자열을 지원하지 않습니다.
  3. NSLog() : Foundation에서 제공하는 함수로, 문자열과 포맷 문자열을 출력할 수 있습니다. Objective-C 언어에서 사용됩니다. 출력되는 문자열은 콘솔뿐 아니라 시스템 로그에도 기록되므로, 일반적으로 앱의 로깅 및 디버깅 용도로 많이 사용됩니다. 하지만 출력 속도가 느리고, 앱의 성능에 영향을 줄 수 있으므로, 릴리즈 버전에서는 주의해서 사용해야 합니다.

**CFStringRef은 Core Foundation 프레임워크에서 문자열을 나타내기 위해 사용되는 타입입니다. 이 타입은 C 문자열과 유니코드 문자열 모두를 나타낼 수 있습니다. CFStringRef은 불변 타입이므로 한번 생성된 이후에는 변경할 수 없습니다. 따라서 문자열을 수정해야 할 경우에는 CFMutableStringRef을 사용해야 합니다. CFStringRef을 사용하여 문자열을 다룰 때에는 문자열의 메모리 관리를 수동으로 해주어야 하며, CFStringRef을 생성할 때 메모리를 할당받았으면 해당 문자열을 더 이상 사용하지 않을 때에는 메모리를 해제해주어야 합니다.

728x90
반응형
LIST

'iOS' 카테고리의 다른 글

NSObject  (0) 2023.04.11
ARC(Automatic Reference Counting)  (0) 2023.04.11
가비지 컬렉터(Garbage Collector)  (0) 2023.04.11
KVO - key-value-observing  (0) 2023.03.08
Html to AttributedString  (0) 2023.02.20