2

我习惯了函数式编程。现在为 iOS 写作,我发现自己经常使用类方法 (+),而不是创建实例 (从 -)。

通常我使用类方法来处理小的、重复的任务——比如发送异步请求、更新数据库、存储/检索首选项等。

这是正确的做法,还是我应该尝试更多地改变我的想法并开始使用实例?甚至可以避免一起使用类方法吗?

4

3 回答 3

4

我最好的建议是看看 Foundation 和 Cocoa 是如何做的,并且做类似的事情。在 Objective-C 中有一个用于类方法的地方。

类方法的一些示例包括

[UIView animateWithDuration:0.3 animations:^{
    // Animation here...
}];

[NSURLConnection sendAsynchronousRequest:request
                                   queue:[NSOperationQueue mainQueue]
                       completionHandler:^(NSURLResponse *response, NSData *date, NSError *error) {
                           // Handle response here ...
                       }];
于 2013-03-03T17:11:33.210 回答
2

Objective C 支持第三种替代方案,用于封装不需要隐式访问实例变量的功能——它使用“普通”C 函数。与类函数不同,“普通”C 函数不使用虚拟调度,这在各种紧密循环中可能很重要。

请注意,类方法提供了比staticJava、C++ 和 C# 方法更多的功能:它们支持覆盖,让基类中的类方法在派生类中使用更具体的实现。

于 2013-03-03T17:08:44.653 回答
0

当您不需要类的任何实例时使用类方法,并且您的目的只能通过类似的方法调用来实现[[NSUserDefaults standardUserDefaults] synchronize];


在 MRC

alloc/init组合为您提供了拥有参考。这意味着您release以后必须这样做。classMethod 返回一个非拥有引用。你可能不会释放它。

IE,

Person *firstPerson=[Person personWithName:@"AnoopVaidya" address:@"India"];

在 ARC 中,对于上述情况没有这样的区别。

于 2013-03-03T17:07:52.997 回答