Details
-
Bug
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
None
-
None
-
OS X 10.9 and 10.10
Description
Nested Thrift collections produce nested generics in Objective-C. Unfortunately, Objective-C generics do not appear to support type nesting.
For instance,
1: list<list<string>> foo
generates an Objective-C declaration like this
@property (strong, nonatomic) NSMutableArray<NSArray<NSString *>> * foo;
which results in an XCode compile error: Type argument 'NSArray<NSString *>' is neither an Objective-C object nor a block type
The only workaround is to edit the generated code to remove the nested type specifiers.
Until Objective-C supports nesting generic types, the Thrift cocoa compiler should limit the type nesting to at most one level – NSMutableArray<NSArray> is legal, for instance. Alternately, an easier solution might be to add a flag that disables the generation of generic types for cocoa.