What's the difference between @interface or @implementation being in .h or .c
我正在一个Kobold2d示例项目(基于正交图块的游戏)中玩一些代码,我注意到:
1 2 3 4 5 | @interface TileMapLayer : CCLayer //Map { float tileMapHeightInPixels; //depricated@interface TileMapLayer() } @end |
在tilemaplayer.h文件中,以及:
1 2 3 4 5 6 7 8 9 10 11 | @interface TileMapLayer() @property (strong) HUDLayer *hud; @property (strong) CCTMXTiledMap *tileMap; @property (strong) CCTMXLayer *background; @property (strong) CCTMXLayer *foreground; @property (strong) CCTMXLayer *meta; @property (strong) CCTMXLayer *base; @property (strong) CCSprite *player; @property (strong) CCSprite *playerTurret; @property (assign) int money; @end |
在tilemaplay.m文件中。
我一直认为
有人能解释一下他们的目的(从基础开始,我还在学习目标C)和上面两个例子的目的有什么区别吗?
在头文件和实现文件中放置的内容完全由您决定。无论如何,在编译之前,它们都会被预处理器连接起来。将其他编译单元可能希望使用的外部接口放入头文件是惯例。编写示例代码的人打算将
首先要注意的是,
对于objective-c,
就目的而言,建议的做法是声明
我还建议您仔细考虑哪些属性应该从对象外部进行修改。在
.h中定义的内容可以被任何.m文件使用,只要.m包含.h.。但是.m中定义的内容只能在当前.m文件中使用。