头文件定义class 出现 duplicate symbol的问题

rollrock1987 2014-08-31 03:02:38
//
// Header.h
/////

我有一个 head.h 里面定义了一些常用的宏,还有就是很多viewController需要用到的 EyeBody,当我在不同的viewController 里面#import "Header.h" 的时候,会提示说 duplicate symbol ,关于EyeBody。 我应该如何应对这一的问题?

Header.h

#ifndef EyeDir_Header_h
#define EyeDir_Header_h


#import <UIKit/UIKit.h>

typedef enum
{
EyeDirUp,
EyeDirRight,
EyeDirDown,
EyeDirLeft

}EyeDirEnum;


@interface EyeBody : NSObject
{
}

@property(nonatomic)EyeDirEnum dir;//上下左右
@property(retain,nonatomic)UIImageView * imgView;//图片
@property(nonatomic)BOOL reverse;//点击时候是否反方向
@end

@implementation EyeBody


@end


#endif
...全文
330 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ReyZhang 2014-08-31
  • 打赏
  • 举报
回复
将EyeBody在head.h中的声明与实现都单独分离出来,创建独立的EyeBody.h, EyeBody.m 在head.h 中如果需要包含对EyeBody的引用,可以使用 #import "EyeBody.h"
Bannings 2014-08-31
  • 打赏
  • 举报
回复
引用 2 楼 rollrock1987 的回复:
[quote=引用 1 楼 zhangao0086 的回复:] 把EyeBody(Objective-C类)单独提出去
你所谓的单独提出去 是怎么个意思? 应该放到哪里? 具体怎么操作?[/quote] 为EyeBody建立.h和.m文件,头文件里只放定义(申明)。你应该会在某种情怀下发现,申明可以写多个,而实现却只能有一个,就像C语言引进了extern关键字解决全局变量的问题一样。编译器编译的时候是分段编译的,你的问题其实是连接器报错,因为它连接的时候发现EyeBody实际有多个。
rollrock1987 2014-08-31
  • 打赏
  • 举报
回复
引用 1 楼 zhangao0086 的回复:
把EyeBody(Objective-C类)单独提出去
你所谓的单独提出去 是怎么个意思? 应该放到哪里? 具体怎么操作?
Bannings 2014-08-31
  • 打赏
  • 举报
回复
把EyeBody(Objective-C类)单独提出去

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧