bog*_*gen 4 xcode ios objective-c-blocks
我有一个块作为实例变量存储在类中
typedef void ((^didSelectWord)(NSString* word));
@property (nonatomic,strong) didSelectWord wordSelected;
Run Code Online (Sandbox Code Playgroud)
我希望xcode自动填充块,就像你输入[UIView animateWithDuration和xcode为它自动填充一个块一样.
当我自动完成我的块时,它就会填满
[self.suggestedSearchTermView setWordSelected:(didSelectWord)wordSelected
Run Code Online (Sandbox Code Playgroud)
代替
[self.suggestedSearchTermView setWordSelected:^(NSString *word) {
Run Code Online (Sandbox Code Playgroud)
是否可以更改某些内容以使Xcode了解如何自动完成此块?
Gab*_*lla 10
好的,我做了一些测试.
显然你有两个(远非完美)选项:
避免typedef并声明属性为
@property (nonatomic,strong) void (^wordSelected)(NSString * word);
Run Code Online (Sandbox Code Playgroud)
如评论中所述,这具有在自动完成中跳过参数名称的缺点.
在接口中显式添加setter声明
typedef void ((^DidSelectWordBlock)(NSString* word));
@interface YourClass : NSObject
@property (nonatomic,strong) DidSelectWordBlock wordSelected;
- (void)setWordSelected:(DidSelectWordBlock)wordSelected;
@end
Run Code Online (Sandbox Code Playgroud)
这将导致Xcode在setter定义之前解析类型定义,为您提供您期望的良好自动完成功能.明显的缺点是界面中有额外的setter声明.
也就是说,你应该填写一份错误报告:http://openradar.appspot.com/
| 归档时间: |
|
| 查看次数: |
1463 次 |
| 最近记录: |