Objective-C使用课堂教学法的最佳实践

Objective-C使用课堂教学法的最佳实践,objective-c,instance,class-method,Objective C,Instance,Class Method,我习惯于函数式编程。现在为iOS写作时,我发现自己经常使用类方法(+),而不是(从-)创建实例 通常,我使用类方法来处理小型的、重复性的任务,如发送异步请求、更新数据库、存储/检索首选项等 这是正确的做法,还是应该尝试更多地改变我的想法,转而开始使用实例?甚至可以避免同时使用类方法吗?当您不需要类的任何实例时,可以使用类方法,并且您的目的只能通过类似于[[NSUserDefaults standardUserDefaults]synchronize]的方法调用来实现 在MRC中 alloc/i

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

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


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

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


在MRC中

alloc/init
组合为您提供了一个自己的引用。这意味着您以后必须
释放它。classMethod返回一个不属于自己的引用。你不能释放它

i、 e

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

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

对于封装不需要隐式访问实例变量的功能,Objective C支持第三种选择,即使用“普通”C函数。与类函数不同,“普通”C函数不使用虚拟分派,这在紧密循环中可能很重要


注意,类方法提供了比java、C++和C语言的代码>静态> /Cudio>更多的功能:它们支持重写,允许基类中的类方法在派生类中使用更具体的实现。

< P>我最好的建议是看基础和COCOA是如何做的,并且类似地这样做。在Objective-C中,类方法占有一席之地

类方法的一些示例包括

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


我要说的是,类方法的用途远不止于此。例如,我可以从一个静态变量中生成一个小的“单例”,并使类方法成为一个访问器。@CodaFi:是的,答案应该是:)这些方法和初始值设定项(尤其是动画方法)比已经尝试过的真正的类方法更方便,但我明白你的观点+1如果你不能阻止自己只使用C,有一种方法(尽管不推荐)可以让你得到一个。@CodaFi总是要把我拉出来,是吗?@RichardJ.RossIII说是一个一个月前的问题;)
[NSURLConnection sendAsynchronousRequest:request
                                   queue:[NSOperationQueue mainQueue]
                       completionHandler:^(NSURLResponse *response, NSData *date, NSError *error) {
                           // Handle response here ...
                       }];