gpt4 book ai didi

objective-c - 一个 Controller 来统治他们

转载 作者:行者123 更新时间:2023-11-28 18:42:51 24 4
gpt4 key购买 nike

我有包含不同方法的辅助类。我不想在我的应用程序中的每个类中都包含它的头文件。我认为这种方法有悖于 DNRY。这就是为什么我决定创建一个名为 AppController 的“主”类,并且我的应用程序中的每个类都继承它。

这是我的做法

AppController.h

#import <Foundation/Foundation.h>
#import "Helper.h"

@interface AppController : NSObject
{
ivars...
}
some methods ...
@end;

我的类.h

import "AppController.h"

@interface myClass : AppController
{
ivars...
}
some methods
@end

到目前为止,还不错。当某些类需要继承的不是 NSObject,而是 UIViewController 时,问题就出现了。这是我的 AppController 变得无用的时刻。我知道 Objective-c 不支持多重继承。我读过某处可以使用组合来完成的内容,但我不知道该怎么做。如果有人给我一些例子,我将不胜感激。

最佳答案

I have read somewhere that can be done using composition, but I can't figure out how to do that. I will be grateful if someone gives me some examples.

是的,组合就是你如何做到这一点。您的继承方法在多个层面上都是错误的。

  • 名为“AppController”的类不是合适的类。它捕获不相关的功能。一个类应该做一件事。
  • 你在强加一个笨拙的继承树
  • 您将其称为“app controller”,这已经是 Cocoa 中一个重要对象的名称。

以下是您的处理方法:

  • 首先,将您的函数和方法分成相关的组。你不应该有一个巨大的“实用程序”类。将这些功能和方法导入到需要它们的事物中,而不是系统中的每个类。
  • 使用categories将新的实用程序功能附加到现有类(包括系统类)。
  • 对于许多类似实用程序的东西,考虑函数而不是方法(但仍然将它们拆分成相关文件,而不是一个巨大的“Utility.m”)。

人们通常会使用“实用程序”垃圾场的绝大多数事情都可以通过 ObjC 中的类别和函数得到更好的解决。其余部分通常最好使用委托(delegate)(但这是另一个话题)。

关于objective-c - 一个 Controller 来统治他们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9117658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com