-1

我知道网上已经有很多关于这个问题的问题,甚至是有用的答案。我试图从我的应用程序内部向 iPhone 日历添加一个日历事件。我使用了这段代码,它确实有效:

EKEventStore *es = [[EKEventStore alloc] init];
EKEventEditViewController *controller = [[EKEventEditViewController alloc] init];
controller.eventStore = es;
controller.editViewDelegate = self;
[self presentModalViewController:controller animated:YES];

唯一的问题是我无法释放日历控制器,这是因为我应该说:

[Controller release]

或其他东西但我的 main.m 设置为自动释放:

int main(int argc, char *argv[])
{
    @autoreleasepool {
          return UIApplicationMain(argc, argv, nil, NSStringFromClass([...AppDelegate class]));
    }   
}

如果我手动释放我得到一个错误,我是否必须更改 main.m 中的某些内容?

4

2 回答 2

0

In your target's build settings, if you see Objective-C Automatic Reference Counting then you are using ARC:

enter image description here

And if you are using ARC then you are not responsible to release object by your self.

I strongly recommend to read more about ARC, you can start from here, this is the most important thing you should consider if you want to build a real application.

于 2013-08-10T09:58:07.080 回答
0

正如我从评论中了解到的,您可能正在使用 ARC。为了检查,进入你的项目选项卡,选择构建设置并在搜索栏中输入

自动引用计数

如果它设置为 YES,则不需要释放对象。

编辑

看来对release这个词有误解。正如您提到的那样,释放(在对象上调用释放)意味着减少对象引用计数器
关闭模态视图控制器是完全不同的事情。为此,在取消按钮委托方法上,您必须调用:

[yourViewControllerInstance dismissModalViewControllerAnimated:YES];

这就是您正在寻找的方法。

于 2013-08-10T09:56:07.440 回答