共用方式為


適用於 Xamarin.Mac 開發人員的 macOS API

概觀

在大部分時間使用 Xamarin.Mac 進行開發時,您可以使用 C# 來思考、讀取和寫入,而不必擔心基礎 Objective-C API。 不過,有時候您必須從Apple閱讀 API 檔、將 Stack Overflow 的答案轉譯為問題的解決方案,或與現有的範例進行比較。

閱讀足夠 Objective-C 危險

有時候必須讀取 Objective-C 定義或方法呼叫,並將它轉譯為對等的 C# 方法。 讓我們看看函 Objective-C 式定義,並細分片段。 這個方法(在 中為選取器)可以在 上NSTableViewObjective-C找到:

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

宣告可以由左至右讀取:

  • 前置 - 詞表示它是實例 (非靜態) 方法。 + 表示它是類別 (static) 方法
  • (BOOL) 是傳回型別 (C# 中的 bool)
  • canDragRowsWithIndexes 是名稱的第一個部分。
  • (NSIndexSet *)rowIndexes 是第一個參數,且其類型為 。 第一個參數的格式如下: (Type) paramName
  • atPoint:(NSPoint)mouseDownPoint 是第二個參數及其類型。 第一個參數之後的每個參數都是格式: selectorPart:(Type) paramName
  • 此訊息選取器的完整名稱為: canDragRowsWithIndexes:atPoint:。 請注意結尾的 : - 這很重要。
  • 實際的 Xamarin.Mac C# 系結為: bool CanDragRows (NSIndexSet rowIndexes, PointF mouseDownPoint)

這個選取器呼叫可以讀取相同的方式:

[v canDragRowsWithIndexes:set atPoint:point];
  • 實例 vcanDragRowsWithIndexes:atPoint 選取器會使用兩個參數 setpoint傳入的 來呼叫。
  • 在 C# 中,方法調用看起來像這樣: v.CanDragRows (set, point);

尋找指定選取器的 C# 成員

既然您已找到需要叫用的 Objective-C 選取器,下一個步驟就是將它對應至對等的 C# 成員。 您可以嘗試四種方法(繼續進行 NSTableView CanDragRows 範例):

  1. 使用自動完成清單快速掃描相同名稱的專案。 因為我們知道它是您可以輸入的 NSTableView 實例:

    • NSTableView x;
    • x. [如果列表未出現,則為 ctrl+空格鍵]。
    • CanDrag [enter]
    • 以滑鼠右鍵按兩下 方法,移至宣告以開啟元件瀏覽器,您可以在其中比較 Export 屬性與有問題的選取器
  2. 搜尋整個類別系結。 因為我們知道它是您可以輸入的 NSTableView 實例:

    • NSTableView x;
    • 以滑鼠右鍵按兩下 NSTableView,移至 [元件瀏覽器] 的宣告
    • 搜尋有問題的選取器
  3. 您可以使用 Xamarin.Mac API 線上檔案

  4. Miguel 提供 Xamarin.Mac API 的「Rosetta Stone」檢視,您可以在這裡 搜尋指定的 API。 如果您的 API 不是 AppKit 或 macOS 特定,您可能會發現該處。