Core Foundation과 Cocoa Foundation에 대한 이해

3307 단어 일상 수집
Cocoa Foundation 
애플의 공식 문서: Cocoa Foundation
Foundation 프레임워크는 OC 클래스의 기초 층을 정의하고 그 뿌리는 NSObject 클래스이며 (NSObject 및 NSCopying 프로토콜과 함께) 기본적인 대상 속성과 행위를 정의한다.유용한 기본 대상 클래스를 제공하는 것 외에 OC 언어가 포함하지 않는 기능의 범례도 도입했다.Foundation은 다음과 같은 몇 가지 기능을 제공합니다.
  • 소량의 기본적인 실용 도구류를 제공한다.
  • 개발의 난이도를 낮추기 위해 통일된 약정, 예를 들어 dealloc 함수를 도입했다.
  • 유니코드 문자열, 객체 지속성 및 객체 분포를 지원합니다.
  • 는 표준적인 운영체제를 제공하여 독립성을 향상시켰다.

  • Foundation에는 객체 클래스, 문자열 및 바이트 배열과 같은 기본 데이터 유형을 나타내는 클래스, 다른 객체를 저장하는 집합 클래스, 날짜 등 시스템 정보를 나타내는 클래스, 통신 포트를 나타내는 클래스가 포함됩니다.Foundation은 일반적인 상황에서 혼란을 피하고 클래스 구조에 어느 정도의 일치성을 도입하기 위해 몇 가지 사례를 도입했다.이러한 정합성은 객체 소유권(즉, 객체 처리를 담당하는 사람) 및 추상 클래스(예: NSEnumerator) 등과 같은 표준 정책을 통해 이루어집니다.이러한 새로운 사례는 API의 특수성과 이상 상황의 수를 줄이고 여러 대상과 같은 메커니즘을 반복해서 사용해서 더욱 효과적으로 인코딩할 수 있도록 합니다.
    Core Foundation
    애플의 공식 문서: Core Foundation
    Core Foundation은 하나의 프로그래밍 인터페이스를 가진 라이브러리나 프레임워크로 개념적으로 Objective-C 기반의 Foundation 프레임워크에서 기원하지만 C 언어로 이루어진다.이를 위해 Core Foundation은 C에서 제한된 객체 모델을 구현했습니다.Core Foundation은 패키징된 데이터와 함수의 불투명 유형을 정의합니다. 이를 개체라고 합니다.Core Foundation 객체의 프로그래밍 인터페이스는 사용과 재사용이 용이하도록 설계되어 다음과 같은 역할을 합니다.
    다양한 프레임워크와 라이브러리 간에 코드와 데이터 공유 지원
  • 어느 정도의 운영체제를 독립적으로 가능하게 한다
  • 유니코드 문자열의 국제화 지원
  • 플러그인 아키텍처, XML 등록 정보 목록 및 기본 설정
  • 을 비롯한 일반적인 API 및 기타 유용한 기능 제공
    Core Foundation을 사용하면 OS X의 다양한 프레임워크와 라이브러리에서 코드와 데이터를 공유할 수 있습니다.응용 프로그램, 라이브러리, 프레임워크는 외부 인터페이스에Core Foundation 형식을 병합하는 C 루틴을 정의할 수 있습니다.따라서 이러한 인터페이스를 통해 데이터(Core Foundation 객체)를 서로에게 전달할 수 있습니다.
    Core Foundation은 또한 지정된 서비스와 Core Foundation 사이의 "toll-free bridging"(무료 브리지 접속)도 제공합니다.무료 브리지를 사용하면 Cocoa 객체를 Core Foundation 객체의 함수 매개 변수로 바꿀 수 있으며 그 반대의 경우도 마찬가지입니다.일부 Core Foundation 의 유형 및 기능은 운영 체제에 따라 동일하게 매핑됩니다.따라서 이러한 API 코드를 사용하면 다른 플랫폼으로 쉽게 마이그레이션할 수 있습니다.날짜와 디지털 형식의 추상적인 시간 도구를 제공하고 절대와 달력 시간 사이를 전환할 수 있는 시설을 제공합니다.그것은 또한 추상적인 수치를 제공하며, 이 값의 서로 다른 내부 표시 사이를 전환하는 도구를 제공한다.
    Core Foundation이 어플리케이션 개발에 제공하는 주요 장점 중 하나는 국제화 지원입니다.그 스트링 대상을 통해 코어파운드레이션은 모든 OS X와 코코아 프로그래밍 인터페이스와 실현 사이에서 가볍고 강력하며 일치된 국제화를 실현할 수 있다.이 지원의 기본 부분은 16비트 유니코드 문자 배열을 나타내는 CFString 유형입니다.CFString 객체는 수 메가바이트의 문자를 수용할 수 있는 유연성을 갖추고 있으며 문자 데이터를 전송하는 모든 프로그래밍 인터페이스에 사용할 수 있는 간단하면서도 저급하다.그것의 성능은 표준 C 문자열의 성능과 크게 다르지 않다.
    주의해야 할 점:
    Core Foundation 프레임워크의 함수는 C 언어의 봉인을 바탕으로 하고 현행 ARC에서는 이러한 인용 계수를 자동으로 관리할 수 없기 때문에 실제 개발에서core Foundation 프레임워크에 사용된 대상이 있으면 메모리를 수동으로 관리해야 한다. 예를 들어 아래 코드: CFRelease 함수를 사용하여 만든 관찰자(defaultModelObserver)를 수동으로 방출해야 한다.
    // Core Foundation Runloop 
    -(void)addRunloopObserver{
        // RunLoop
        CFRunLoopRef runloop = CFRunLoopGetCurrent();
        // 
        CFRunLoopObserverContext context = {
            0,
            (__bridge void *)(self),
            &CFRetain,
            &CFRelease,
            NULL,
        };
        // 
        static CFRunLoopObserverRef defaultModeObserver;
        // 
        defaultModeObserver = CFRunLoopObserverCreate(NULL, kCFRunLoopBeforeWaiting, YES, NSIntegerMax - 999, &Callback, &context);
        // RunLoop 
        CFRunLoopAddObserver(runloop, defaultModeObserver, kCFRunLoopDefaultMode);
        //C Creat
    ew\copy ARC !! CFRelease(defaultModeObserver); }

    CF로 시작하는 것을 제외하고 Ref로 끝나는 대상은 모두 Core Foundation 기반의 봉인이며 C 언어를 바탕으로 하는 봉인이라고 할 수 있다. 예를 들어 통신록을 얻는 대상: ABAddressBookRef, CGContextRef이다.

    좋은 웹페이지 즐겨찾기