我的问题是,我会知道如何将 2 个 .m 文件用于一个对象类,也用于一个标头(.h)
我有一个包含 20000 多行的大方法,并且我愿意,该方法在 .m 文件中独立,而其他方法在另一个 .m 文件中独立。我已经完成了,但我得到了错误,这些方法不在一个 .m 文件中。我收到链接错误,但如果我删除第二个 .m 文件,我可以删除链接错误。
是否可以为一个标题创建 2 个 .m 文件?
如果是,请告诉我怎么做?
我的问题是,我会知道如何将 2 个 .m 文件用于一个对象类,也用于一个标头(.h)
我有一个包含 20000 多行的大方法,并且我愿意,该方法在 .m 文件中独立,而其他方法在另一个 .m 文件中独立。我已经完成了,但我得到了错误,这些方法不在一个 .m 文件中。我收到链接错误,但如果我删除第二个 .m 文件,我可以删除链接错误。
是否可以为一个标题创建 2 个 .m 文件?
如果是,请告诉我怎么做?
我有一个 20000+ 行的大方法
好吧,这就是你的问题。这就是你需要解决的问题。将事情分成两个实现文件会分散注意力。这是你的主要问题。几乎没有任何情况下这不是一种糟糕的做事方式。
方法最多应该有几十行。如果您发现自己编写的方法比这更长,则需要将功能分解成更小的部分。创建较小的方法来完成部分工作,然后从原始方法中调用这些方法。
类不应该是这个大小。如果您正在创建一个包含超过几千行代码的文件,那么这是一个巨大的警告信号,表明一个类负责过多的功能。您应该将功能分解为几个类,每个类负责一个关键功能。
我收到链接错误
如果你将这样的句子发布到 Stack Overflow,它应该伴随着你得到的实际错误。
您可以使过长的方法成为该类的类别:
MyClass.h:
@interface MyClass
@property ...
-(void) method;
...
@end
@interface MyClass (BigMethod)
-(void) bigMethod;
@end
我的班级.m:
@implementation MyClass
-(void) method
{
...
}
...
@end
大方法.m
@implementation MyClass (BigMethod)
-(void) bigMethod
{
...
}
@end
但是,20k 行方法是荒谬的。你真的应该重构它。
你有几种方法:
您可以将您的方法分为 2 个不同的类别:
//-- MyClass1.m
@implementation MyClass (part1)
@end
//-- MyClass2.m
@implementation MyClass (part2)
@end
出于对称原因,我定义了 2 个类别;当然,您还需要类的“基础” @implementation
(即,没有类别说明符);您可以选择是否定义“基础”和extension
类别,或“基础”和两个类别等...
或者您可以尝试在第一个文件中包含第二个.m
文件:
//-- MyClass1.m
@implementation MyClass
<first part>
#include "MyClass2.m"
@end
两者都应该工作。
更不用说重构你的类的可能性了,这将是最好的选择。