Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Objective-C中,实例方法和类方法哪个内存效率更高、速度更快?_Ios - Fatal编程技术网

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

Ios 在Objective-C中,实例方法和类方法哪个内存效率更高、速度更快?,ios,Ios,我知道什么时候使用类方法,什么时候使用实例方法(当您需要对对象的特定实例进行操作的代码时,您应该创建实例方法。当您需要执行通常涉及该类但可能不会对该类的任何特定对象进行操作的操作时,您应该创建类方法)。但是如果我有两种选择,如何决定是使用类方法还是实例方法呢?选择一种方法有哪些因素(效率、速度等) @interface MyMethod : NSObject //Instance Method -(int)objAddTwoNum:(int)n1 with:(int)n2; //Class

我知道什么时候使用类方法,什么时候使用实例方法(当您需要对对象的特定实例进行操作的代码时,您应该创建实例方法。当您需要执行通常涉及该类但可能不会对该类的任何特定对象进行操作的操作时,您应该创建类方法)。但是如果我有两种选择,如何决定是使用类方法还是实例方法呢?选择一种方法有哪些因素(效率、速度等)

@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
因此我认为在这种情况下,类方法更快

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

可能的副本我将此标记为关闭,因为这已被询问并回答。您何时有选择?你想做一些非常愚蠢的事情吗,比如把一个实例传递给一个类方法?“如何决定”通常涉及到使用你的大脑。这两者之间不太可能有任何明显的区别speed@downvoters我问的是方法的执行速度,但没有解释执行速度和内部操作逻辑。。请不要否决投票。帮助我!!