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 string
sunma 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 NSString
bir 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 NSString
yerine 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 NSString
olarak 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 NSString
arasındaki string
karardı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 NSString
de, 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.