私には2つの方法があります。 dismissRecordVC:
へDelegate
を伝えます> - -Deallocが呼び出されていない
RecordVC
却下>RecordVC
と
2つ目のシナリオは、このように書き割り当て解除:
最初のシナリオは、このように書き
RecordVC
- >がDelegate
を伝えますはを返します。RecordVC
は割り当て解除されません。
最初のシナリオは、次のようにトリガーされます。
- (IBAction)back:(id)sender {
if ([_chromaKeySessionManager isWriting]) {
[_chromaKeySessionManager cancelWriting];
}
[_chromaKeySessionManager stopRunning];
[delegate dismissRecordVC:self];
}
デリゲートメソッドdismissRecordVC:
これです:このback:
メソッドを使用する場合は
- (void)dismissRecordVC:(RecordVC *)vc {
[self dismissModalViewControllerAnimated:YES];
}
、その後、RecordVCがうまく割り当てが解除されます。
2つ目のシナリオは、次のようにトリガーされます。
- (IBAction)goToVideos {
if ([_chromaKeySessionManager isWriting]) {
[_chromaKeySessionManager cancelWriting];
}
[_chromaKeySessionManager stopRunning];
[delegate dismissAndShowVideosForRecordVC:self];
}
とデリゲートのdismissAndShowVideosForRecordVC:
方法:
- (void)dismissAndShowVideosForRecordVC:(RecordVC *)vc {
[self dismissViewControllerAnimated:YES completion:^{
VideosTVC *vc = [[VideosTVC alloc] init];
[[self navigationController] pushViewController:vc animated:YES];
[vc release];
}];
}
ので、この場合には、RecordVCが割り当て解除されることは決してありません。ここでの唯一の違いは、これをコンプリートブロックで却下し、別のコントローラーを押すことです。
私にとって、両方のシナリオでは、RecordVC getの割り当てが解除され、後者のシナリオでは割り当てが解除されないという点を除いて、全く同じように見えます。奇妙なことに、私はこれを言うべきではないが、内部漏れのように思える。
私が残していることは、完了ブロックを使用して解雇することを知らないということですか? ありがとう
dismissViewControllerAnimatedはUIViewControllerのメソッドです。ここで確認してください:http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html – 0xSina
その場合、コードのどこかにVideoTVCの参照が保持されています(保持?)。 –
本当に確認する必要はありますか?2つのシナリオがあります.1つは、すぐに見分けることができますが、違いはなく、参照は保持されませんが、魔法のように割り当てが解除されることはありません。しかし、私はもう一度確認することを確認します – 0xSina