Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 我创建了一个类,这个类有100个静态方法_Iphone_Objective C_Ipad - Fatal编程技术网

Iphone 我创建了一个类,这个类有100个静态方法

Iphone 我创建了一个类,这个类有100个静态方法,iphone,objective-c,ipad,Iphone,Objective C,Ipad,我想问一下,我制作了一个包含100多个静态方法的类。但类不是静态的,所以我想问,所有的方法是否都一直存在于应用程序内存中。或者是糟糕的编程。请推荐我 请解决我的问题。它也有任何非静态的方法吗 如果没有,则应将类设置为静态 如果是的话,我会说设计可以改进 并且所有方法在类第一次使用时都会加载到应用程序内存中。然而,内存中只有一个方法的副本。< P>如果你真的希望这些程序在可重用的上下文中可用,那么将它们作为常规的外部C或C++函数写入并添加到库中,以便在其他项目中使用。然后根据需要重新引入或包装它

我想问一下,我制作了一个包含100多个静态方法的类。但类不是静态的,所以我想问,所有的方法是否都一直存在于应用程序内存中。或者是糟糕的编程。请推荐我


请解决我的问题。

它也有任何
非静态的
方法吗

如果没有,则应将
类设置为
静态

如果是的话,我会说设计可以改进


并且所有方法在类第一次使用时都会加载到应用程序内存中。然而,内存中只有一个方法的副本。

< P>如果你真的希望这些程序在可重用的上下文中可用,那么将它们作为常规的外部C或C++函数写入并添加到库中,以便在其他项目中使用。然后根据需要重新引入或包装它们。我知道——这在objc开发人员中不是一个流行的答案,但至少当您开始拥有真正复杂的代码库时,它的扩展性要好得多

但类不是静态的,所以我想问,所有的方法是否都一直存在于应用程序内存中

是的,这些方法可能不会被剥离。当你在其他项目中使用这些工具时,你需要为所有东西付费。对于函数,它们可能会被剥离,您只需为您在程序中实际使用的内容付费。具体来说,函数或方法的内存存在于二进制文件中,并且只存在于程序内存中一次—实例不克隆方法,它们在运行时使用调度表(如vtable)进行引用和查找。类的每个实例仅通过该表访问其选择器,因此方法计数不会使实例变大。在这种情况下,记忆很少(如果有的话)是一个问题

或者是糟糕的编程。请推荐我


这是非常不寻常的,表明设计中出现了问题。

我认为一些额外的信息可能会有所帮助。但是为什么有一个包含100个静态方法的对象呢?你不能把它们分成更具体的对象吗?我对iOS上的编程一点也不熟悉,但我认为所有方法都包含在应用程序内存中。经典的Objective-C类没有静态方法。你是说类方法,例如
+(void)foo
?是的,实际上我想写可重用的代码。就像我有一个基于导航的应用程序,每个屏幕都有一个左右按钮。[实用工具设置LeftNavigationBarButtonWithTitle:@“IphoneApp”onTarget:self];-其中,Utility是我的类,它包含setLeftNavigationBarButtonWithTitle作为类方法,该类方法接受两个参数:一个是要在导航栏上显示的“Buttontile”,另一个是要在其中显示屏幕导航栏标题的引用。因此,要添加每个屏幕左栏按钮,我必须调用一行。@jeremypt关键字
static
对于Objective-C类来说没有任何意义。这个类只包含所有静态方法。我对一次又一次地创建对象以及在任何其他类方法中调用方法感到困惑。如果我的方法不是静态的,我想降低创建对象的成本。在编程中创建新对象是非常昂贵的事情。为了减少这种情况,我创建了一个包含所有静态方法的类。我没有定义那个静态类或单例类。创建singleton类然后将所有方法都设置为静态会更好吗?