我很困惑於static
方法,它的定義顯然存在於一個類中,但其聲明在同一文件中的多個類之間共享。它可以在文件之間以某種方式共享嗎?在Objective-C的單個文件中的類之間共享靜態方法
的詳細
我想一個.mm
文件分割成多個文件(每類一)。所有的源代碼是從Pete Goodliffe's CoreMIDI Example。
我拿了PGMidi class from here,並把它分成不同的接口和類。除了一個標記爲static
的方法之外,所有內容都完美編譯,它需要一次在兩個地方(在PGMidi中它是「已使用但未定義的」)。該方法是「拿來主義」在這一行任何類實現之外:
static void PGMIDIReadProc(const MIDIPacketList *pktlist, void *readProcRefCon, void *srcConnRefCon);
這顯然是所有類在同一個文件共享(什麼?)。它在兩個班級中提到。
1)PGMidi
,使用它的(也許是指向PGMidiSource
2)PGMidiSource
,其中該方法體被定義
static
void PGMIDIReadProc(const MIDIPacketList *pktlist, void *readProcRefCon, void *srcConnRefCon)
{
PGMidiSource *self = (PGMidiSource*)srcConnRefCon;
[self midiRead:pktlist];
}
的問題是,所述self
稱爲在方法體中PGMidi
(沒有midiRead
方法)沒有意義...
這是什麼static
方法?我如何讓它在兩個文件之間工作?
這工作,但直到我將.mm重命名爲.m。謝謝! –
@Yar:這可能是一個名稱問題。 C++向函數名稱添加東西來對參數類型進行編碼,以便可以重載函數。 – JeremyP
謝謝@JeremyP –