Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Návrh Xamarin.iOS i Xamarin.Mac volá rozhraní API pro použití k zveřejnění nativního typu řetězce .NET, stringpro manipulaci s řetězci v jazyce C# a dalších programovacích jazycích .NET a k zveřejnění řetězce jako datového typu vystaveného rozhraním API místo datového NSString typu.
To znamená, že vývojáři by neměli uchovávat řetězce, které mají být použity pro volání do rozhraní Xamarin.iOS a Xamarin.Mac API (Unified) ve speciálním typu (Foundation.NSString), mohou dál používat Mono System.String pro všechny operace a kdykoli rozhraní API v Xamarin.iOS nebo Xamarin.Mac vyžaduje řetězec, naše vazba rozhraní API se postará o zařazování informací.
Například Objective-C vlastnost "text" u UILabel typu NSStringje deklarována takto:
@property(nonatomic, copy) NSString *text
Toto je vystaveno v Xamarin.iOS jako:
class UILabel {
public string Text { get; set; }
}
Implementace této vlastnosti zařadí řetězec jazyka C# na NSString pozadí a volá objc_msgSend metodu stejným způsobem, jako Objective-C by to bylo.
Existuje několik rozhraní API třetích stran Objective-C , která nepoužívají NSStringřetězec jazyka C , ale využívají řetězec jazyka C ("char"). V těchto případech můžete stále použít datový typ řetězce jazyka C#, ale musíte použít atribut [PlainString] k informování generátoru vazeb, že tento řetězec by neměl být zařazován jako NSStringřetězec , ale místo toho jako řetězec jazyka C.
Výjimky pravidla
V Xamarin.iOS i Xamarin.Mac jsme provedli výjimku tohoto pravidla. Rozhodnutí mezi tím, kdy zveřejníme string, a když provedeme výjimku a zveřejníme NSString, se provede, pokud NSString by metoda mohla místo porovnání obsahu provádět porovnání ukazatelů.
K tomu může dojít, když Objective-C rozhraní API jako token používá veřejnou NSString konstantu, která představuje nějakou akci, místo porovnání skutečného obsahu řetězce.
V takových případech NSString jsou rozhraní API vystavená a existuje menšina rozhraní API, která tato rozhraní mají. Všimněte si také, že vlastnosti NSString jsou zpřístupněny v některých třídách. Tyto NSString vlastnosti jsou zpřístupněny pro položky, jako jsou oznámení. Tyto vlastnosti obvykle vypadají takto:
class Foo {
public NSString FooNotification { get; }
}
Oznámení jsou klíče, které se používají pro NSNotification třídu, když chcete zaregistrovat konkrétní událost, která je vysílána modulem runtime.
Klíče obvykle vypadají přibližně takto:
class Foo {
public NSString FooBarKey { get; }
}
Dalším místem, kde NSStringjsou vystaveny v rozhraní API, jsou tokeny, které se používají jako parametry pro určitá rozhraní API v iOSu nebo OS X, které přebírají NSDictionary objekty jako parametry. Slovník obvykle obsahuje NSString klíče. Xamarin.iOS podle konvence tyto statické NSString vlastnosti pojmenuje přidáním názvu "Klíč".