Как связать тип массива C в библиотеке target-c с помощью Objective Sharpie?

Метод, который мне нужно связать, имеет аргумент в массиве примитивов, например:

(bool)isRectangle:(const CGPoint[4])corners;

Как я связываю const CGPoint[4] Тип с типом C#?

Примечание: используя Sharpie, результат ниже

[Static]
[Export("isRectangle:")]
void IsRectangle(CGPoint[] corners);

и когда я его построил, я получил ошибку

cannot convert from 'CoreGraphics.CGPoint[]' to 'Foundation.NSObject'

1 ответ

Определите const CGPoint[4] как структура в вашем StructsAndEnums.cs:

[StructLayout(LayoutKind.Sequential)]
public struct Rectangle
{
    public CGPoint leftTop;
    public CGPoint rightTop;
    public CGPoint leftBotton;
    public CGPoint rightBotton;
}

Ваше определение становится:

//(bool)isRectangle:(const CGPoint[4])corners;
[Export("isRectangle:")]
bool IsRectangle(Rectangle corners);
Другие вопросы по тегам