xcode 4.1でコーディングされたコードを動作させようとしています。私のターゲットシステムは、Xcode 3.1 を搭載した osx 10.5 です。そのため、コンパイル中にプロパティの問題が発生することがよくありますが、これは処理できます。しかし、次のコード、私は巧妙に解決する方法がわかりません。
コンパイラは言った:'__bridge'
宣言されていない(この関数で最初に使用)
A) これがマクロであることは知っていますが、そのフレーズを消去できるかどうか知りたい (__bridge CFURLRef)
ですか?
B) もっと巧妙な解決策はありますか?
C) 知識: これは__bridge
正確には何のための橋なのか?
static BOOL willStartAtLogin() {
NSURL *appurl = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
BOOL found = NO;
LSSharedFileListRef items = LSSharedFileListCreate(NULL, kLSSharedFileListSessionLoginItems, NULL);
if (items) {
UInt32 seed;
CFArrayRef itemsArray = LSSharedFileListCopySnapshot(items, &seed);
CFIndex count = CFArrayGetCount(itemsArray);
for (CFIndex i = 0; i < count; i++) {
LSSharedFileListItemRef a = (LSSharedFileListItemRef)CFArrayGetValueAtIndex(itemsArray, i);
CFURLRef url = NULL;
OSStatus err = LSSharedFileListItemResolve(a, kLSSharedFileListNoUserInteraction | kLSSharedFileListDoNotMountVolumes, &url, NULL);
if (err == noErr) {
// here follows the problematic part
found = CFEqual(url, (__bridge CFURLRef)appurl);
CFRelease(url);
if (found) { break; }
}
}
CFRelease(items);
}
return found;
}
EDIT
@Catfish_Man の回答の後、このコードが ARC なしでどのように見えるかを知りたいです。
少し検索したEDIT2
で、ARCのない古いOS用の最新のシステムでコードをコンパイルするための下位互換性を解決するライブラリがあることがわかりました。ここに見られる: https://github.com/plausiblelabs/PLWeakCompatibility
古い 32 ビット OS でそのようなコードをコンパイルするのに役立つ同等のものはありますか?