何时使用类别

Jul*_*les 11 objective-c

我最近发现了类别,并且想知道何时在用户定义的类/新类中使用它们是合适的.例如,我可以看到将类别添加到现有类(如NSString)的好处,但是在创建新类时,为此添加类别而不仅仅是实现常规方法的优势是什么?

希望这是有道理的.非常感谢

儒勒

Cal*_*leb 8

对于您自己的类,答案与框架类没有任何不同.如果您有多个项目,您可能最终会在它们之间共享一些类.但是,您可能希望扩展一些类,以便它们可以更轻松地使用特定项目,但不希望在其他项目中包含这些额外的方法,这些方法可能没有意义.您可以使用类别来扩展您的类,而无需子类.


Jos*_*zzi 6

如果我正确理解你的问题,创建一个"新类"总是"子类",因为你至少是NSObject的子类.

您可以在新类上使用类别来分离复杂类的责任部分.例如,所有基本功能(实例变量,访问器,描述等)都可以放在一个文件("主"类文件)中,而支持协议的所有方法(如NSTableViewDataSource)可以放在另一个文件中.

有些人采取这种方法来保持"整洁".我坚信"如果它是我自己的自定义类,它的所有代码应该在一个文件中",所以我个人不这样做.我使用"#pragma mark Some Section Name"来划分类代码的不同逻辑方面,以帮助导航和可读性.你的旅费可能会改变.

  • 我想更深入地讨论"新类别的类别,以分离复杂类的责任部分"与"#pragma mark some Section Name". (2认同)