Dan*_*ark 4 syntax objective-c
我可以使用适当的Obj-C语法重做这个方法,但我想知道如何从Obj-C调用它.该方法看起来像这样
@interface YarMidiCommon : NSObject
static
MIDIPacketList *makePacketList(Byte *packetBuffer, const UInt8 *data, UInt32 size);
@end
Run Code Online (Sandbox Code Playgroud)
但我不知道如何调用该方法.我试过了
Byte packetBuffer[size+100];
MIDIPacketList *packetList = makePacketList(packetBuffer, bytes, size);
Run Code Online (Sandbox Code Playgroud)
但错误是"有内部联系,但没有定义." 如果不诉诸"适当的"Obj-C语法,这可能吗?
为了记录,我想模仿的方法就像是
+ (MIDIPacketList*) makePacketListWithPacketBuffer:(Byte*)packetBuffer data:(const UInt8 *)data size:(UInt32)size;
Run Code Online (Sandbox Code Playgroud)
这是冗长而烦人的,因为这里的一切都是C无论如何.
由于该函数是C函数,因此您需要删除静态关键字,否则它将无法在其翻译单元外看到.一旦你这样做,你的第一个例子将起作用.此外,因为它是一个C函数将其声明放在内部或外部的@interface定义内部或外部,所以@implementation对你如何调用它没有任何区别.
将声明视为等效于全局范围中的静态C函数.这与C++或Java非常不同.此功能没有类范围或外部链接.
因此,@interface范围不是一个很好的声明地方makePacketList.该消息表示使用它时定义不可见.
| 归档时间: |
|
| 查看次数: |
3998 次 |
| 最近记录: |