我很困惑于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 –