首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个.h文件的目标C-2 .m文件?

一个.h文件的目标C-2 .m文件?
EN

Stack Overflow用户
提问于 2012-11-16 05:40:13
回答 3查看 934关注 0票数 2

我的问题是,我应该知道如何对一个对象类和一个头文件(.h)使用2个.m文件。

我有一个包含20000+行的大方法,这个方法在一个.m文件中是独立的,其他方法在其他.m文件中是独立的。我已经这样做了,但我得到的错误是,这些方法不在一个.m文件中。我得到一个链接错误,但是如果我删除第二个.m文件,我可以删除链接错误。

可以为一个头文件创建2个.m文件吗?

如果是,请告诉我是怎么做的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-16 05:46:54

您有几种方法:

  1. 你可以把你的方法分成两个不同的类别:

//-- MyClass1.m @implementation MyClass (part1) @end //-- MyClass2.m @implementation MyClass (part2) @end

出于对称的原因,我定义了两个类别;当然,您还需要一个类的“基本”@implementation (即,没有类别说明符);您可以选择是定义一个“基本”和“extension”类别,还是定义“基本”和两个类别,等等……

  • ,或者您可以尝试在第一个.m文件中包含第二个:

//-- MyClass1.m @implementation MyClass #include "MyClass2.m“@end

这两种方法都应该有效。

更不用说重构类的可能性了,这将是最好的选择。

票数 0
EN

Stack Overflow用户

发布于 2012-11-16 05:50:40

对于20000+行,我有一个很大的方法

好了,这就是你的问题所在。这就是你需要解决的问题。将代码分成两个实现文件会让人分心。这是你的主要问题。实际上,在任何情况下,这都不是一种糟糕的做法。

方法最多应该有几十行。如果您发现自己编写的方法比这更长,则需要将功能分解为更小的部分。创建较小的方法来完成部分工作,然后从原始方法调用这些方法。

类不应该是这个大小。如果你正在创建一个包含超过几千行代码的文件,这是一个巨大的警告信号,表明一个类负责太多的功能。您应该将功能分解为几个类,每个类负责一个关键的功能部分。

我得到一个链接错误

如果你在Stack Overflow上发布了这样一句话,它应该伴随着你得到的实际错误。

票数 2
EN

Stack Overflow用户

发布于 2012-11-16 05:49:00

您可以将过长的方法设置为类的一个类别:

MyClass.h:

代码语言:javascript
复制
@interface MyClass
@property ...
-(void) method;
...
@end

@interface MyClass (BigMethod)
-(void) bigMethod;
@end

MyClass.m:

代码语言:javascript
复制
@implementation MyClass
-(void) method
{
    ...
}
...
@end

BigMethod.m

代码语言:javascript
复制
@implementation MyClass (BigMethod)
-(void) bigMethod
{
    ...
}
@end

然而,20k行的方法是荒谬的。你真的应该重构它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13406699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档