Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Структура Xamarin.iOS и Xamarin.Mac требует использования API для отображения собственного типа строки .NET, string, для использования строк на C# и других языках программирования .NET, и для отображения строки в качестве типа данных, предоставляемого API, а не типа данныхNSString.
Это означает, что разработчикам не нужно хранить строки, предназначенные для вызова Xamarin.iOS и API Xamarin.Mac (унифицированный) в специальном типе (Foundation.NSString), они могут использовать System.String Mono для всех операций, и каждый раз, когда для API в Xamarin.iOS или Xamarin.Mac требуется строка, поскольку наша привязка API выполняет упаковку информации.
Например, свойство Objective-C "text" в UILabel типа NSString объявляется следующим образом:
@property(nonatomic, copy) NSString *text
Оно предоставляется в Xamarin.iOS как:
class UILabel {
public string Text { get; set; }
}
В фоновом режиме реализация этого свойства маршалирует строку C# в NSString и вызывает метод objc_msgSend так же, как это делал бы метод Objective-C.
Существует несколько сторонних API Objective-C, которые используют не NSString, а строку C ("char"). В таких случаях вы по-прежнему сможете использовать строковый тип данных C#, однако также понадобиться атрибут [PlainString], чтобы сообщить генератору привязки, что эта строка должна упаковываться не как NSString, а как строка C.
Исключения из правил
В Xamarin.iOS и Xamarin.Mac создано исключение из этого правила. Выбор между предоставлением string и предоставлением NSString в качестве исключения, нужно делать, если метод NSString может выполнить сравнение указателей вместо сравнения содержимого.
Это может произойти, когда API Objective-C используют общедоступную константу NSString в качестве маркера, представляющего некоторое действие, вместо сравнения фактического содержимого строки.
В этих случаях предоставляются NSString API, но таких API меньшинство. Также обратите внимание, что свойства NSString представлены в некоторых классах. Эти NSString свойства предоставляются для таких элементов, как уведомления. Эти свойства обычно выглядят следующим образом:
class Foo {
public NSString FooNotification { get; }
}
Уведомления — это ключи, которые используются для класса NSNotification, если необходимо выполнить регистрацию для конкретного события, транслируемого средой выполнения.
Ключи обычно выглядят примерно так:
class Foo {
public NSString FooBarKey { get; }
}
Другое место, где NSString представлены в API, — это маркеры, используемые в качестве параметров для некоторых API в iOS или OS X, принимающие объекты NSDictionary в качестве параметров. Словарь обычно содержит ключи NSString. Xamarin.iOS, по соглашению, именует статические свойства NSString, добавляя имя "Ключ".