Objective-C中哪个内存效率更高,速度更快,实例方法或类方法?

时间:2016-02-04 06:24:26

标签: ios

我知道何时使用类方法以及何时使用实例方法(当您需要在对象的特定实例上运行的代码时,您应该创建实例方法。当您需要执行涉及该方法的操作时,您可以创建类方法一般的类,但可能不会对该类的任何特定对象进行操作)。但是如果我有这两个选项,如何决定是否使用类方法或实例方法?那些负责选择一种方法的因素(效率,速度等)是什么?

1 个答案:

答案 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

所以我认为在这种情况下类方法更快

稍后会尝试不同的方法.. 快乐的编码! :)

相关问题