다음을 통해 공유


Objective Sharpie 릴리스 기록

3.4(2017년 10월 11일)

v3.4.0 다운로드

  • Xcode 9 지원: iOS 11, macOS 10.13, tvOS 11 및 watchOS 4
  • SIMD 및 tgmath 관련 문제는 이제 해결되어야 합니다.
  • 원격 분석이 완전히 제거되었습니다.

3.3(2016년 8월 3일)

  • Xcode 8 베타 4, iOS 10, macOS 10.12, tvOS 10 및 watchOS 3에 대한 지원.
  • 최신 Clang 마스터 빌드로 업데이트됨(2016-08-02)
  • 원격 분석 제출 옵션을sharpie pod bind 유지합니다 sharpie bind.

3.2(2016년 6월 14일)

  • Xcode 8 베타 1, iOS 10, macOS 10.12, tvOS 10 및 watchOS 3에 대한 지원.

3.1(2016년 5월 31일)

  • CocoaPods 1.0 지원
  • 먼저 네이티브 .framework 를 빌드한 다음 바인딩하여 CocoaPods 바인딩 안정성을 개선했습니다.
  • CocoaPods .framework 및 바인딩 정의를 Binding 디렉터리에 복사하여 Xamarin.iOS 및 Xamarin.Mac 바인딩 프로젝트와 더 쉽게 통합할 수 있도록 합니다.

3.0(2015년 10월 5일)

  • Xcode 7에 도입된 경량 제네릭 및 null 허용 가능성을 비롯한 새로운 Objective-C 언어 기능 지원
  • 최신 iOS 및 Mac SDK를 지원합니다.
  • Xcode 프로젝트 빌드 및 구문 분석 지원! 이제 전체 Xcode 프로젝트를 Objective Sharpie에 전달할 수 있으며 올바른 작업(예: sharpie bind Project.xcodeproj -sdk ios)을 파악하기 위해 최선을 다할 것입니다.
  • CocoaPods 지원 ! 이제 Objective Sharpie(예: )에서 직접 CocoaPods를 구성, 빌드 및 바인딩할 수 있습니다 sharpie pod init ios AFNetworking && sharpie pod bind.
  • 프레임워크를 바인딩할 때 프레임워크가 지원하는 경우 Clang 모듈이 사용하도록 설정되므로 프레임워크의 구조가 프레임워크에 의해 module.modulemap정의되기 때문에 프레임워크가 가장 정확하게 구문 분석됩니다.
  • 프레임워크 제품을 빌드하는 Xcode 프로젝트의 경우 중간 제품 대상 대신 해당 제품을 Xcode 프로젝트의 비 프레임워크 대상으로 구문 분석해도 자동으로 확인할 수 없는 모호성이 있을 수 있습니다.

2.1.6(2015년 3월 17일)

  • 이진 연산자 식 바인딩이 수정되었습니다. 식의 왼쪽이 오른쪽과 잘못 교환되었습니다(예: 1 << 0 잘못 바인딩 0 << 1됨). 이것을 알아 차린 아담 켐프에게 감사드립니다!
  • i386 대신 및 i386 -DNS_BUILD_32_LIKE_64nuintnint 바인딩 uintint 되는 문제를 해결 NSIntegerNSUInteger 했습니다. 이제 Clang에 전달되어 i386에서 예상대로 구문 분석 objc/NSObjCRuntime.h 작업을 수행합니다.
  • Mac OS X SDK(예: -sdk macosx10.10)의 기본 아키텍처는 이제 i386 대신 x86_64 기본 -arch 값을 재정의하지 않는 한 생략할 수 있습니다.

2.1.0(2015년 3월 15일)

  • sizeof 인수 형식이 C# 기본 형식에 매핑되지 않는 C 식은 Clang에서 계산되고 잘못된 C#을 생성하지 않도록 정수 리터럴로 바인딩됩니다.
  • 형식이 블록인 속성의 구문을 수정 Objective-C 합니다(Objective-C 코드는 바인딩된 선언 위의 주석에 표시됨).
  • 감쇠된 형식을 원래 형식으로 바인딩합니다(int[] Clang에서 의미 체계를 분석하는 int* 동안에는 감쇠되지만 대신 기록 int[] 된 원래 형식으로 바인딩).

이 포인트 릴리스에서 수정된 많은 버그를 보고해 주신 데이브 던킨에게 대단히 감사드립니다!

2.0.0: 2015년 3월 9일

Objective Sharpie 2.0은 향상된 Clang 기반 드라이버 및 파서와 새로운 NRefactory 기반 바인딩 엔진을 제공하는 주요 릴리스입니다. 이러한 향상된 구성 요소는 특히 형식 바인딩과 관련된 훨씬 더 나은 바인딩을 제공합니다. 이후 릴리스에서 많은 사용자가 볼 수 있는 기능을 얻을 수 있는 Objective Sharpie의 내부적인 다른 많은 개선 사항이 적용되었습니다.

Objective Sharpie 2.0은 Clang 3.6.1을 기반으로 합니다.

형식 바인딩 개선 사항

  • Objective-C 이제 블록이 지원됩니다. 여기에는 익명/인라인 블록 및 을 통해 typedef명명된 블록이 포함됩니다. 익명 블록은 대리자로 System.ActionSystem.Func 바인딩되고 명명된 블록은 강력한 이름의 delegate 형식으로 바인딩됩니다.

  • 익명 열거형에 대한 명명 추론이 향상되었으며, 그 바로 앞에 typedef 기본 제공 정수 계열 형식(예: long 또는 int)으로 확인됩니다.

  • 이제 C 포인터가 대신 C# unsafe 포인터 System.IntPtr로 바인딩됩니다. 이렇게 하면 포인터 매개 변수를 매개 변수로 outref 전환할 수 있는 경우에 대한 바인딩의 명확성이 높아집니다. 매개 변수가 있어야 outref하는지 여부를 항상 유추할 수 없으므로 포인터가 바인딩에 유지되어 더 쉽게 감사할 수 있습니다.

  • 위의 포인터 바인딩에 대한 예외는 개체에 대한 2계층 포인터 Objective-C 가 매개 변수로 발생하는 경우입니다. 이러한 경우 규칙이 우세하고 매개 변수가 →(예: NSError **errorout NSError error)로 out 바인딩됩니다.

특성 확인

Objective Sharpie에서 생성된 바인딩에 이제 특성에 주석이 추가 [Verify] 되는 경우가 많습니다. 이러한 특성은 바인딩을 원래 C/Objective-C선언(바인딩된 선언 위의 주석에 제공됨)과 비교하여 Objective Sharpie가 올바른 작업을 했는지 확인해야 함을 나타냅니다.

모든 바인딩된 선언에 대해 확인이 권장되지만 특성으로 주석이 추가된 선언에는 확인이 [Verify] 필요할 가능성이 큽니다. 대부분의 경우 바인딩을 가장 잘 생성하는 방법을 유추하기 위해 원래 네이티브 소스 코드에 메타데이터가 충분하지 않기 때문입니다. 최상의 바인딩 결정을 내리려면 헤더 파일 내에서 설명서 또는 코드 주석을 참조해야 할 수 있습니다.

자세한 내용은 특성 확인 설명서를 참조하세요.

기타 주목할 만한 개선 사항

  • using 이제 바인딩된 형식에 따라 문이 생성됩니다. 예를 들어 바인딩 using Foundation; 된 경우 NSURL 문도 생성됩니다.

  • struct 이제 union 공용 구조체에 대한 트릭을 사용하여 선언이 [FieldOffset] 바인딩됩니다.

  • 이제 상수 식 이니셜라이저가 있는 열거형 값이 제대로 바인딩됩니다. 전체 식이 C#으로 변환됩니다.

  • 이제 Variadic 메서드와 블록이 바인딩됩니다.

  • 이제 이 옵션을 통해 프레임워크가 -framework 지원됩니다. 자세한 내용은 네이티브 프레임워크 바인딩에 대한 설명서를 참조하세요.

  • Objective-C소스 코드는 이제 자동으로 검색되므로 Clang를 수동으로 전달하거나 -xobjective-c Clang에 전달할 -ObjC 필요가 없습니다.

  • Clang 모듈 사용량(@import)은 이제 자동으로 검색되므로 Clang에서 새 모듈 지원을 사용하는 라이브러리에 대해 Clang에 수동으로 전달할 -fmodules 필요가 없습니다.

  • 이제 Xamarin Unified API가 기본 바인딩 대상입니다. 옵션을 -classic 사용하여 32비트 전용 클래식 API를 대상으로 합니다.

주목할 만한 버그 수정

  • 범주에서 Objective-C 사용되는 경우 바인딩 수정 instancetype
  • 전체 이름 Objective-C 범주
  • 접두사 Objective-C 프로토콜( I 예: INSCopying 대신 NSCopying)

1.1.35: 2014년 12월 21일

사소한 버그 수정.

1.1.1: 2014년 12월 15일

1.1.1은 2013년 4월 Objective Sharpie의 초기 미리 보기 이후 Xamarin에서 1.5년 동안 내부 사용 및 개발한 후 첫 번째 주요 릴리스입니다. 이 릴리스는 일반적으로 안정적이고 새로운 Clang 백 엔드를 갖춘 다양한 네이티브 라이브러리에 사용할 수 있는 것으로 간주되는 첫 번째 릴리스입니다.