Xamarin.ios 개발자를 위한 macOS ApimacOS APIs for Xamarin.Mac Developers


Xamarin.ios를 사용 하 여 개발 하는 데 많은 시간이 소요 되는 경우 기본 목표-C Api C# 에 크게 신경 쓰지 않고, 읽기 및 쓰기를 수행할 수 있습니다.For much of your time developing with Xamarin.Mac, you can think, read, and write in C# without much concern with the underlying Objective-C APIs. 그러나 경우에 따라 Apple에서 API 설명서를 읽고 문제에 대 한 Stack Overflow의 답변을 솔루션으로 변환 하거나 기존 샘플과 비교 해야 합니다.However, sometimes you’ll need to read the API documentation from Apple, translate an answer from Stack Overflow to a solution for your problem, or compare to an existing sample.

위험에 대 한 충분 한 목표를 읽도록 합니다.Reading enough Objective-C to be dangerous

경우에 따라 목표 C 정의 또는 메서드 호출을 읽고 동등한 C# 메서드로 변환 해야 합니다.Sometimes it will be necessary to read an Objective-C definition or method call and translate that to the equivalent C# method. 목표-C 함수 정의를 살펴보고 부분을 분할 하는 방법을 살펴보겠습니다.Let’s take a look at an Objective-C function definition and break down the pieces. 이 메서드 (목표-C의 선택기 )는 NSTableView에서 찾을 수 있습니다.This method (a selector in Objective-C) can be found on NSTableView:

- (BOOL)canDragRowsWithIndexes:(NSIndexSet *)rowIndexes atPoint:(NSPoint)mouseDownPoint

선언은 왼쪽에서 오른쪽으로 읽을 수 있습니다.The declaration can be read left to right:

  • - 접두사는 인스턴스 (비정적) 메서드 임을 의미 합니다.The - prefix means it is an instance (non-static) method. +는 클래스 (정적) 메서드 임을 의미 합니다.+ means it is a class (static) method
  • (BOOL)는 반환 형식입니다 (bool in C#).(BOOL) is the return type (bool in C#)
  • canDragRowsWithIndexes은 이름의 첫 번째 부분입니다.canDragRowsWithIndexes is the first part of the name.
  • (NSIndexSet *)rowIndexes는 첫 번째 매개 변수이 고 형식이입니다.(NSIndexSet *)rowIndexes is the first param and with it’s type. 첫 번째 매개 변수 형식은 다음과 같습니다. (Type) pararmNameThe first parameter is in the format: (Type) pararmName
  • atPoint:(NSPoint)mouseDownPoint은 두 번째 매개 변수 및 해당 형식입니다.atPoint:(NSPoint)mouseDownPoint is the second param and its type. 첫 번째 뒤의 모든 매개 변수는 형식입니다. selectorPart:(Type) pararmNameEvery parameter after the first is the format: selectorPart:(Type) pararmName
  • 이 메시지 선택기의 전체 이름은 canDragRowsWithIndexes:atPoint:입니다.The full name of this message selector is: canDragRowsWithIndexes:atPoint:. 끝에 :를 확인 하는 것이 중요 합니다.Note the : at the end - it is important.
  • 실제 Xamarin.ios C# 바인딩은 다음과 같습니다bool CanDragRows (NSIndexSet rowIndexes, PointF mouseDownPoint)The actual Xamarin.Mac C# binding is: bool CanDragRows (NSIndexSet rowIndexes, PointF mouseDownPoint)

이 선택기 호출은 다음과 같은 방식으로 읽을 수 있습니다.This selector invocation can be read the same way:

[v canDragRowsWithIndexes:set atPoint:point];
  • 인스턴스 v에는 전달 된 setpoint의 두 매개 변수를 사용 하 여 라는 canDragRowsWithIndexes:atPoint 선택기를 사용 합니다.The instance v is having its canDragRowsWithIndexes:atPoint selector called with two parameters, set and point, passed in.
  • 에서 C#메서드 호출은 다음과 같습니다.x.CanDragRows (set, point);In C#, The method invocation looks like this: x.CanDragRows (set, point);

지정 된 C# 선택기의 멤버 찾기Finding the C# member for a given selector

호출 해야 하는 목표-C 선택기를 찾았지만 다음 단계는 해당 C# 멤버에 매핑합니다.Now that you’ve found the Objective-C selector you need to invoke, the next step is mapping that to the equivalent C# member. 다음 네 가지 방법으로 시도할 수 있습니다 (NSTableView CanDragRows 예제를 사용 하 여 계속).There are four approaches you can try (continuing with the NSTableView CanDragRows example):

  1. 자동 완성 목록을 사용 하 여 같은 이름의 항목을 빠르게 검색할 수 있습니다.Use the auto completion list to quickly scan for something of the same name. 이는 NSTableView의 인스턴스인 것 이므로 다음을 입력할 수 있습니다.Since we know it is an instance of NSTableView you can type:

    • NSTableView x;
    • x. [ctrl + space (목록이 표시 되지 않는 경우)를 표시 합니다.x. [ctrl+space if the list does not appear).
    • CanDrag [enter]CanDrag [enter]
    • 메서드를 마우스 오른쪽 단추로 클릭 하 고 선언으로 이동 하 여 Export 특성을 해당 선택기와 비교할 수 있는 어셈블리 브라우저를 엽니다.Right-click the method, go to declaration to open the Assembly Browser where you can compare the Export attribute to the selector in question
  2. 전체 클래스 바인딩을 검색 합니다.Search the entire class binding. 이는 NSTableView의 인스턴스인 것 이므로 다음을 입력할 수 있습니다.Since we know it is an instance of NSTableView you can type:

    • NSTableView x;
    • NSTableView를 마우스 오른쪽 단추로 클릭 하 고 선언에서 어셈블리 브라우저로 이동 합니다.Right-click NSTableView, go to declaration to Assembly Browser
    • 문제의 선택기 검색Search for the selector in question
  3. XAMARIN.IOS API 온라인 설명서 를 사용할 수 있습니다.You can use the Xamarin.Mac API online documentation .

  4. Miel el은 지정 된 API를 검색할 수 있는 Xamarin.ios api의 "Rosetta 석재" 보기를 제공 합니다.Miguel provides a "Rosetta Stone" view of the Xamarin.Mac APIs here that you can search through for a given API. API가 AppKit 또는 macOS와 관련 되지 않은 경우 찾을 수 있습니다.If your API is not AppKit or macOS specific, you may find it there.