Objective c 在objective c中自动调用类方法
我的情况:Objective c 在objective c中自动调用类方法,objective-c,cocoa,Objective C,Cocoa,我的情况: 一个仪表板控制器,在其中注册小部件并自动构建视图 将填充仪表板的小部件类,它们采用协议(需要一些非正式的方法),并且需要在仪表板类中注册,以便仪表板单身者知道谁想要加入 仪表板类具有+(void)寄存器:(class)w只需注册想要加入NSArray的类 p>我需要每个小部件类自动调用该方法。在C++中,我使用布尔方法生成一个布尔变量,用这个方法初始化。 Language=objective-c首次加载类时,objective-c运行时将调用两个方法+加载和+初始化。我相信您可
- 一个仪表板控制器,在其中注册小部件并自动构建视图
- 将填充仪表板的小部件类,它们采用
协议(需要一些非正式的方法),并且需要在仪表板类中注册,以便仪表板单身者知道谁想要加入 - 仪表板类具有
+(void)寄存器:(class)w代码>只需注册想要加入NSArray的类
Language=objective-c首次加载类时,objective-c运行时将调用两个方法<代码>+加载和
+初始化
。我相信您可以通过在+initialize
中调用[self register]
来完成所需的操作运行时:
+寄存器:
方法或其他方法关于步骤2,您不能使用
+conformsToProtocol:
方法,因为您将迭代的类之一是NSZombie
类,它在您对其调用方法时触发异常。因此,您可能希望改用运行时函数。+initialize
仅在使用类时调用,而不是在加载类时调用。由于程序在注册类之前很可能不知道该类,+load
更合适。因此解决方案只是覆盖该方法?这实际上取决于寄存器应该做什么。我发现所描述的整个架构即将。。。bad@JoshuaWeinberg你对我的问题有什么建议?我知道这似乎不是一个好的做法,但我的解决方案生成的代码不需要为新类型的Widget进行编辑。你没有足够的描述,我无法为你提供有效的替代方案。但是在你所说的范围内,在你想注册到singleton的类中实现+load应该是可行的。请使用正确的格式。