我知道何时使用类方法以及何时使用实例方法(当您需要在对象的特定实例上运行的代码时,您应该创建实例方法。当您需要执行涉及该方法的操作时,您可以创建类方法一般的类,但可能不会对该类的任何特定对象进行操作)。但是如果我有这两个选项,如何决定是否使用类方法或实例方法?那些负责选择一种方法的因素(效率,速度等)是什么?
答案 0 :(得分:0)
@interface MyMethod : NSObject
//Instance Method
-(int)objAddTwoNum:(int)n1 with:(int)n2;
//Class Method
+(int)clasAddTwoNum:(int)n1 with:(int)n2;
@end
@implementation MyMethod
-(int)objAddTwoNum:(int)n1 with:(int)n2;
{
int sum = n1+n2;
return sum;
}
+(int)clasAddTwoNum:(int)n1 with:(int)n2;
{
int sum = n1+n2;
return sum;
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
//Calculating Execution time for Object method
NSDate *startObj = [NSDate date];
[[MyMethod new]objAddTwoNum:30 with:40];
NSDate *finishObj = [NSDate date];
NSTimeInterval executionTimeObj = [finishObj timeIntervalSinceDate:startObj];
NSLog(@"Execution Time OBJ operation: %f", executionTimeObj);
//Calculating Execution time for Class method
NSDate *startClass = [NSDate date];
[MyMethod clasAddTwoNum:30 with:40];
NSDate *finishClass = [NSDate date];
NSTimeInterval executionTimeClass = [finishClass timeIntervalSinceDate:startClass];
NSLog(@"Execution Time CLass operation: %f", executionTimeClass);
}
return 0;
}
日志显示类方法执行时间更短
2016-02-04 15:17:01.236 HDMethods[43278:1031682] Execution Time OBJ operation: 0.000028
2016-02-04 15:17:01.236 HDMethods[43278:1031682] Execution Time CLass operation: 0.000002
Program ended with exit code: 0
所以我认为在这种情况下类方法更快
稍后会尝试不同的方法.. 快乐的编码! :)