2013-10-31 42 views
0

我一直在尋找答案,但是我的關鍵詞fu只是明顯的讓我失望。爲什麼回報似乎在objc中定義宏造成麻煩

我有我正在使用objc/Xcode中的宏:

#define strongify(source, target) __strong typeof(source) target = source; if(target == nil) NSLog(@"variable was already nil") 

導致我經常需要編寫代碼,像這樣:

strongify(weakSelf, strongSelf); 
if (!strongSelf) return; 

所以我想我會用下面的宏展開:

#define strongifyOrReturn(source, target) __strong typeof(source) target = source; if(target == nil) return 

Xcode拒絕自動完成它,並抱怨它doesn編譯時不知道它。

如何,如果我不使用return關鍵字,只是NSLog仍然使用相同的宏名稱,Xcode會很高興地按照我的要求做,並且新名稱列在自動完成建議中。

我希望你們中的一些可以告訴爲什麼會這樣...

+3

我無法重現該問題,我的Xcode愉快地自動完成該宏。 (這並不意味着* I *會對此宏感到滿意:-) –

+1

xCode給出的錯誤是什麼? –

+0

@ThilinaCháminHewagama它給了我一個錯誤,如'隱式聲明的函數'strongifyOrReturn'在C99中無效' – CodeReaper

回答

0

任何人有類似的問題,應該嘗試看看,如果他們正在被Xcode的foobar'ed。在我的MBP過夜後,它現在自動完成並編譯,並且通常很高興。

因此,在SO上發佈一個問題之前,重新啓動Xcode並重新測試。嘆。