Więc, oczywiście, po WWDC gram z nowościami przedstawionymi w zeszłym tygodniu. Jak wiecie Apple wprowadziła rodzajowych do świata Objective-CGeneryczne jednostki Objective-C nie działają dla metod? (Xcode 7 Beta (kompilacja: 7A120f))
Uwaga: Ta odpowiedź jest jakoś follow-up na to pytanie: Are there strongly-typed collections in Objective-C?
Próbowałem ten kod w metodzie działa świetnie
NSMutableArray<NSString*> *array = [[NSMutableArray alloc] init];
[array addObject:@""];
[array addObject:@(54)];Incompatible pointer types sending 'NSNumber *' to parameter of type 'NSString * __nonnull'
// Great, generics works as expected.
jednak mam również metodę Chcę przekształcić do generyków
w pliku nagłówka:
- (NSArray <NSString*> *)objectsToSearch;
Realizacja:
- (NSArray <NSString*> *)objectsToSearch
{
NSString *first = @"1";
NSString *second = @"2";
NSString *third = @"3";
NSNumber *test = @(55);
return @[first, second, third, test]; // No-error!!!
}
robię coś źle lub Clang nie obsługuje leków generycznych + literały albo jest coś jeszcze mi brakuje?
Tak, robisz coś złego, jak wiesz! I tak kompilator powinien generować błąd/ostrzeżenie.Xcode 7 to oprogramowanie w wersji beta, zgłoś je Apple jako błąd i miejmy nadzieję, że to naprawi. – CRD
Dzięki za wyjaśnienie! – lvp
Nie wierzę, że to błąd. Zobacz mój duży post poniżej z przykładowym kodem i dlaczego działa poprawnie. – drekka