gpt4 book ai didi

objective-c - Objective-C 中的无状态静态方法与 C 函数

转载 作者:太空狗 更新时间:2023-10-30 03:52:49 25 4
gpt4 key购买 nike

就良好的 Objective-C 编码实践而言,如果我创建一个没有状态的函数,将其编写为某个类的静态方法还是编写为 C 函数更好?

例如,我有一个特殊的文件路径检索方法,可以在进入主 NSBundle 之前检查 Caches 目录。我目前将它作为一个静态方法放在一个空的 Utils 类下。这应该是 C 函数吗?

我选择使用静态方法(目前)的原因是 a) 它与 Objective-C 语法一致,并且 b) 该类有助于对方法进行分类。然而,我觉得我有点作弊,因为我可以很容易地用这些无状态静态方法填充我的 Util 类,并最终得到一个丑陋的“shell 类”,其唯一目的就是保存它们。

您使用什么约定?根据某种客观指标,一个比另一个“更好”吗?谢谢!

最佳答案

如果您能想到一个现有类,这可能是一个很好的方法,您可以通过创建一个 Objective-C 类别将您的方法注入(inject)其中。这保留了您使用静态方法的两个原因,同时又不会用额外的类污染类空间。

例如:

@interface NSString (MyStringCategories) 
- (NSString*) myCoolMethod;
@end

// [StringCategories.m]
#import "StringCategories.h"

@implementation NSString (MyStringCategories)
- (NSString*) myCoolMethod {
// do cool stuff here
return whateverYouLike;
}
@end

现在您可以将myCoolMethod 发送到任何 字符串。酷!

在您的特定情况下,听起来 NSBundle 上的方法可能是合适的体系结构。不要忘记,它可以是一个类方法,因此您无需实例化任何东西即可调用您的方法。

关于objective-c - Objective-C 中的无状态静态方法与 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216752/

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