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


대부분의 Xamarin.Mac을 사용 하 여 개발 시간에 대 한 인지, 읽기 및 기본 Objective 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.

위험한 것으로 충분 한 Objective C 읽기Reading enough Objective-C to be dangerous

경우에 따라 읽기는 Objective-c로 정의 해야 할 수 있습니다 또는 메서드 호출 및 해당 하는 C# 메서드를 변환 합니다.Sometimes it will be necessary to read an Objective-C definition or method call and translate that to the equivalent C# method. Objective C 함수 정의 확인 하 고 부분 세분화 보겠습니다.Let’s take a look at an Objective-C function definition and break down the pieces. 이 메서드 (한 선택기 Objective 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) 반환 형식 (C#에서 bool)(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.Mac 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 는 해당 canDragRowsWithIndexes:atPoint 두 매개 변수를 사용 하 여 호출 하는 선택기 setpoint, 전달 된입니다.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

호출 해야 하는 Objective-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 + 스페이스바 목록에 나타나지 않으면).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.Mac API 합니다.You can use the Xamarin.Mac API online documentation .

  4. Miguel Xamarin.Mac api "전설의 Stone" 보기가 여기 는 지정된 된 API를 통해 검색할 수 있습니다.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.