我使用此代码访问iOS日历,它可以工作,但我意识到我复制了创建事件的代码; 首先,我的手机在iOS 6或更高版本中要求获得许可并获得许可 ,第二次在iOS 4或5中运行时
EKEventStore *eventStore = [[EKEventStore alloc] init];
if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)])
{
// the selector is available, so we must be on iOS 6 or newer
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
if (error)
{
// display error message here
}
else if (!granted)
{
// display access denied error message here
}
else
{
// access granted
// ***** do the important stuff here *****
// i need run my code blow here
}
});
}];
}
else
{
// this code runs in iOS 4 or iOS 5
// ***** do the important stuff here *****
// i need run my code blow here
}
我想在这里调用一段代码来添加一个事件而不重复代码。
谢谢,对不起我的英语不好。答案 0 :(得分:1)
为什么不将导入代码抽象为单独的方法而不是将其全部内联?你总是想让你的方法简洁明了。
所以你说的话;
// access granted
// ***** do the important stuff here *****
// i need run my code blow here
[self doSomeImportantStuff];
显然你所有重要的代码都属于一个方法:
- (void)doSomeImportantStuff {
// ***** do the important stuff here *****
}
或者,如果您致力于使用内联块来执行您的工作:
void (^importBlock)() = ^{
// ***** do the important stuff here *****
};
稍后您可以通过简单地调用它来执行此块:
importBlock();
修改强>
有关编写块的更多帮助,请查看goshdarnblocksyntax