我的问题是,我应该知道如何对一个对象类和一个头文件(.h)使用2个.m文件。
我有一个包含20000+行的大方法,这个方法在一个.m文件中是独立的,其他方法在其他.m文件中是独立的。我已经这样做了,但我得到的错误是,这些方法不在一个.m文件中。我得到一个链接错误,但是如果我删除第二个.m文件,我可以删除链接错误。
可以为一个头文件创建2个.m文件吗?
如果是,请告诉我是怎么做的?
发布于 2012-11-16 05:46:54
您有几种方法:
//-- MyClass1.m @implementation MyClass (part1) @end //-- MyClass2.m @implementation MyClass (part2) @end
出于对称的原因,我定义了两个类别;当然,您还需要一个类的“基本”@implementation (即,没有类别说明符);您可以选择是定义一个“基本”和“extension”类别,还是定义“基本”和两个类别,等等……
.m文件中包含第二个://-- MyClass1.m @implementation MyClass #include "MyClass2.m“@end
这两种方法都应该有效。
更不用说重构类的可能性了,这将是最好的选择。
发布于 2012-11-16 05:50:40
对于20000+行,我有一个很大的方法
好了,这就是你的问题所在。这就是你需要解决的问题。将代码分成两个实现文件会让人分心。这是你的主要问题。实际上,在任何情况下,这都不是一种糟糕的做法。
方法最多应该有几十行。如果您发现自己编写的方法比这更长,则需要将功能分解为更小的部分。创建较小的方法来完成部分工作,然后从原始方法调用这些方法。
类不应该是这个大小。如果你正在创建一个包含超过几千行代码的文件,这是一个巨大的警告信号,表明一个类负责太多的功能。您应该将功能分解为几个类,每个类负责一个关键的功能部分。
我得到一个链接错误
如果你在Stack Overflow上发布了这样一句话,它应该伴随着你得到的实际错误。
发布于 2012-11-16 05:49:00
您可以将过长的方法设置为类的一个类别:
MyClass.h:
@interface MyClass
@property ...
-(void) method;
...
@end
@interface MyClass (BigMethod)
-(void) bigMethod;
@endMyClass.m:
@implementation MyClass
-(void) method
{
...
}
...
@endBigMethod.m
@implementation MyClass (BigMethod)
-(void) bigMethod
{
...
}
@end然而,20k行的方法是荒谬的。你真的应该重构它。
https://stackoverflow.com/questions/13406699
复制相似问题