我习惯于函数式编程。现在为iOS编写,我发现自己经常使用类方法(+),而不是创建实例(来自 - )。
通常我会将类方法用于小的重复性任务 - 例如发送异步请求,更新数据库,存储/检索首选项等。
这是正确的做法,还是应该尝试更改我的想法并开始使用实例?甚至可以避免一起使用类方法吗?
答案 0 :(得分: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 ...
}];
答案 1 :(得分:2)
Objective C支持第三种替代方法,用于封装不需要隐式访问实例变量的功能 - 它使用“普通”C函数。与类函数不同,“普通”C函数不使用虚拟调度,这在不同的紧密循环中可能很重要。
请注意,类方法提供的功能比Java,C ++和C#的static
方法更多:它们支持覆盖,让基类中的类方法在派生类中使用更具体的实现。
答案 2 :(得分:0)
当您不需要该类的任何实例时,将使用类方法,并且您的目的仅通过[[NSUserDefaults standardUserDefaults] synchronize];
在MRC中
alloc/init
组合为您提供了拥有参考。这意味着您以后必须release
。 classMethod返回非拥有引用。你可能不会发布它。
即,
Person *firstPerson=[Person personWithName:@"AnoopVaidya" address:@"India"];
在ARC中,对于上述情况,没有这样的差异。