Можно ли определить свойство блока Objective-C, но в Xcode 4 все еще есть завершение полного кода?
Если я использую typedef для определения блока:
typedef void (^CompletionBlock)(MyObject *myObj);
и затем определите свойство:
@property (nonatomic, copy) CompletionBlock completionBlock;
, а затем @synthesize
свойство Я не получаю полное завершение кода при вызове метода установки.Xcode будет использовать typedef, и из-за этого при завершении кода не используется полный синтаксис блока с параметрами блока, он использует typedef.
Если я определяю прототип метода в заголовке, который использует полныйблочный синтаксис вместо typedef:
@property (nonatomic, copy) void (^completionBlock)(MyObject *myObj);
, а затем я использую @synthesize
, предоставленный установщик приближается к использованию полного синтаксиса завершения кода, но принципиально он пропускает имена параметров:
[self setCompletionBlock:(void (^)(MyObject *)) { ... }
Наконец, если я попытаюсь @synthesize
, а затем переопределить реализацию метода установки или поместить прототип в заголовок:
- (void)setCompletionBlock:(void (^)(MyObject *myObj))completionBlock {...}
Выдается предупреждение о том, что тип свойства не соответствует типу метода доступа.Независимо от того, как я пытаюсь определить синтаксис, я не могу определить свойство блока и метод установки, который имеет полный синтаксис для завершения кода.Могу ли я взять свой торт и съесть его тоже?
Спасибо!