iOS - 在同一方法中调用代码块

时间:2014-10-14 10:06:49

标签: ios xcode calendar

我使用此代码访问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 
    }

我想在这里调用一段代码来添加一个事件而不重复代码。

谢谢,对不起我的英语不好。

1 个答案:

答案 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