次の ARC コードを検討してください。
- (void)main {
NSString *s = [[NSString alloc] initWithString:@"s"];
[NSApp beginSheet:sheet
modalForWindow:window
modalDelegate:self
didEndSelector:@selector(sheetDidEnd:returnCode:context:)
contextInfo:(__bridge void *)s
];
}
- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode context:(void *)context {
NSString *s = (__bridge_transfer NSString *)context;
}
質問: 7 行目で、 を__bridge
使用する必要がありますか、 または__bridge_retained
、またはそれは問題ではありませんか、それとも文字列の保持カウント (つまり、文字列が明示的に割り当てられているか、 のようなクラス初期化子を介して自動解放されているか) に依存します+[NSString stringWithString:]
か?