Vì vậy, rõ ràng, sau WWDC tôi đang chơi với những thứ mới được trình bày trong tuần trước. Như bạn đã biết Apple giới thiệu Generics với thế giới của Objective-Cgenerive-C generics không làm việc cho các phương pháp? (Xcode 7 Beta (xây dựng: 7A120f))
Lưu ý: Câu trả lời này là bằng cách nào đó theo dõi cho câu hỏi này: Are there strongly-typed collections in Objective-C?
Tôi đã thử mã này trong phương pháp, hoạt động tuyệt vời
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.
Tuy nhiên tôi cũng có phương pháp tôi muốn chuyển đổi để Generics
Trong tập tin tiêu đề:
- (NSArray <NSString*> *)objectsToSearch;
Thực hiện:
- (NSArray <NSString*> *)objectsToSearch
{
NSString *first = @"1";
NSString *second = @"2";
NSString *third = @"3";
NSNumber *test = @(55);
return @[first, second, third, test]; // No-error!!!
}
Am tôi làm điều gì đó sai hoặc Clang không hỗ trợ Generics + literals hoặc có cái gì đó khác tôi đang thiếu?
Có bạn đang làm điều gì đó sai, như bạn đã biết! Và có trình biên dịch sẽ tạo ra một lỗi/cảnh báo.Xcode 7 là phần mềm beta, báo cáo nó như là một lỗi cho Apple và hy vọng họ sẽ sửa chữa nó. – CRD
Cảm ơn bạn đã làm rõ! – lvp
Tôi không tin đó là lỗi. Xem bài viết lớn của tôi dưới đây với mã mẫu và tại sao nó hoạt động chính xác. – drekka