Aracılığıyla paylaş


Xamarin.iOS ve Xamarin.Mac'te NSString

Hem Xamarin.iOS hem de Xamarin.Mac'in tasarımı, C# ve diğer .NET programlama dillerinde dize işlemesi için yerel .NET dize türünü kullanıma stringsunma ve dizeyi veri türü yerine API tarafından kullanıma sunulan veri türü olarak kullanıma sunma api'sini NSString çağırır.

Bu, geliştiricilerin Xamarin.iOS ve Xamarin.Mac API'sine (Birleştirilmiş) çağrı yapmak için kullanılması amaçlanan dizeleri özel bir türde (Foundation.NSString ) tutmak zorunda kalmamaları gerektiği anlamına gelir; tüm işlemler için Mono'ları System.String kullanmaya devam edebilir ve Xamarin.iOS veya Xamarin.Mac'teki bir API dize gerektirdiğinde API bağlamamız bilgileri hazırlamayla ilgilenir.

Örneğin, Objective-C türünde NSStringbir UILabel "text" özelliği şu şekilde bildirilir:

@property(nonatomic, copy) NSString *text

Bu, Xamarin.iOS'ta şu şekilde kullanıma sunulur:

class UILabel {
    public string Text { get; set; }
}

Arka planda, bu özelliğin uygulanması C# dizesini içinde NSString sıralar ve yöntemini aynı şekilde Objective-C çağırırobjc_msgSend.

C dizesi ("char") kullanmak NSStringyerine kullanmayan birkaç üçüncü taraf Objective-C API vardır. Bu gibi durumlarda, C# dizesi veri türünü kullanmaya devam edebilirsiniz, ancak bağlama oluşturucuya bu dizenin bir NSStringolarak değil, C dizesi olarak sıralanması gerektiğini bildirmek için [PlainString] özniteliğini kullanmanız gerekir.

Kurala Özel Durumlar

Hem Xamarin.iOS hem de Xamarin.Mac'te bu kurala bir istisna yaptık. Yöntemin içerik karşılaştırması yerine işaretçi karşılaştırması yapıyor olması durumundaNSString, s'yi kullanıma sunmamız ve hariç ve kullanıma sunmamız NSStringarasındaki stringkarardır.

Api'ler, dizenin gerçek içeriğini karşılaştırmak yerine bazı eylemleri temsil eden bir belirteç olarak ortak NSString sabit kullandığında bu durum oluşabilirObjective-C.

Bu gibi durumlarda NSString API'ler kullanıma sunulur ve buna sahip api'lerin azınlığı vardır. Ayrıca bazı sınıflarda NSString özelliklerinin kullanıma sunulduğuna da dikkat edeceksiniz. Bu NSString özellikler bildirimler gibi öğeler için kullanıma sunulur. Bunlar genellikle şu özelliklere benzer:

class Foo {
     public NSString FooNotification { get; }
}

Bildirimler, çalışma zamanı tarafından yayınlanan belirli bir olaya kaydolmak istediğinizde sınıf için NSNotification kullanılan anahtarlardır.

Tuşlar genellikle şöyle görünür:

class Foo {
     public NSString FooBarKey { get; }
}

API'de kullanıma sunulan başka bir yer NSStringde, nesneleri parametre olarak alan NSDictionary iOS veya OS X'teki belirli API'lere parametre olarak kullanılan belirteçlerdir. Sözlük genellikle anahtarlar içerir NSString . Xamarin.iOS, kurala göre bu statik NSString özellikleri "Anahtar" adını ekleyerek adlandırır.