Все ссылочные типы Objective C являются подклассом NSObject.Это позволяет нам некоторый уровень динамической типизации.
Ниже две версии в основном одинаковы.
Старая, общая версия:
- (void)funcWithString:(id)param {
NSLog(@"funcWithString %@", param);
}
- (void)funcWithStringArray:(NSArray*)paramArr {
NSLog(@"funcWithStringArray %@", paramArr);
for (id str in paramArr) {
[self funcWithString:str];
}
}
Более современная, статическая версия:
- (void)funcWithString:(NSString*)param {
NSLog(@"funcWithString %@", param);
}
- (void)funcWithStringArray:(NSArray<NSString*>*)paramArr {
NSLog(@"funcWithStringArray %@", paramArr);
for (NSString* str in paramArr) {
[self funcWithString:str];
}
}
C # Object ~> Obj-C id
C # [] ~> Obj-C NSArray
Используется, как показано ниже (все 3 эквивалентны):
[self funcWithString: @"single string"];
[self funcWithStringArray: @[@"single string"]];
[self funcWithStringArray: [NSArray arrayWithObject: @"single string"]];