Kesinlikle yazılan koleksiyonları Objective-C var mı?
Biz Java Mac/iPhone programlama yeniyim ve Objective-C, C# ve "jenerik", toplama tek tip ilan veren sınıflar. C örneğin,#
Dictionary<int, MyCustomObject>
tek tip MyCustomObject olan tamsayılar ve değerleri anahtarlar içerebilir. Benzer bir mekanizma Objective-C var mı?
CEVAP
Güncellemelerinden 7, Apple 'Hafif Jenerik' Objective-C Objective-C tür bir uyuşmazlık varsa derleyici uyarıları oluşturur. tanıttı
NSArray<NSString*>* arr = @[@"str"];
NSString* string = [arr objectAtIndex:0];
NSNumber* number = [arr objectAtIndex:0]; // Warning: Incompatible pointer types initializing 'NSNumber *' with an expression of type 'NSString *'
Ve Swift kodu, derleyici bir hata üretir:
var str: String = arr[0]
var num: Int = arr[0] //Error 'String' is not convertible to 'Int'
Hafif Jenerik NSArray, NSDictionary ve NSSet ile kullanılmak üzere tasarlanmıştır, ama aynı zamanda kendi sınıflarını ekleyebilirsiniz:
@interface GenericsTest<__covariant T> : NSObject
-(void)genericMethod:(T)object;
@end
@implementation GenericsTest
-(void)genericMethod:(id)object {}
@end
Objective-C derleyici uyarısı ile daha önce yaptığı gibi davranır.
GenericsTest<NSString*>* test = [GenericsTest new];
[test genericMethod:@"string"];
[test genericMethod:@1]; // Warning: Incompatible pointer types sending 'NSNumber *' to parameter of type 'NSString *'
ama Swift Genel Bilgiler tamamen göz ardı eder.
var test = GenericsTest<String>() //Error: Cannot specialize non-generic type 'GenericsTest'
Bu Vakfı koleksiyon sınıfları daha dışında, Objective-C hafif jenerik Swift tarafından dikkate alınmaz. Başka tür hafif jenerik kullanıyorsanız unparameterized olsalardı kadar Hızlı alınır.
Kesinlikle Yazılan Kısmi bir Görünüm i...
&; Objective-C daha kesinlikle C den &...
Koleksiyonları. sözdizimi ve açıklar l...
Anlayış başvuru Kakao ve Objective-C i...
Nasıl node.js YAZILAN veri ayıklamak m...