-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はautoreleaseに設定されています:

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

手動でリリースするとエラーが発生します。main.m で何かを変更する必要がありますか?

4

2 に答える 2

0

コメントからわかるように、ARCを使用している可能性があります。それを確認するには、プロジェクト タブに移動し、[ビルド設定]を選択して、検索バーに入力します。

自動参照カウント

YES に設定されている場合、オブジェクトを解放する必要はありません。

編集

releaseという言葉に関して誤解があったようです。あなたが言及したリリース(オブジェクトでリリースを呼び出す)は、オブジェクト参照カウンターを減らすことを意味します。
モーダルView Controllerを閉じることは、まったく別のことです。これを行うには、キャンセルボタンのデリゲート メソッドで、次を呼び出す必要があります。

[yourViewControllerInstance dismissModalViewControllerAnimated:YES];

それがあなたが探している方法です。

于 2013-08-10T09:56:07.440 に答える
0

ターゲットのビルド設定で、Objective-C の自動参照カウントが表示される場合は、ARC を使用しています。

ここに画像の説明を入力

また、ARC を使用している場合は、自分でオブジェクトを解放する責任はありません。

ARC について詳しく読むことを強くお勧めします。ここから始めることができます。これは、実際のアプリケーションを構築する場合に考慮すべき最も重要なことです。

于 2013-08-10T09:58:07.080 に答える