美文网首页
iOS效率问题:字符串高效转换

iOS效率问题:字符串高效转换

作者: 十一岁的加重 | 来源:发表于2017-09-11 21:34 被阅读39次

    也许你跟我会有同样一种感觉,有个问题在我们心里一直藏着,在很长一段时间里我们都没法解决,但是突然猛的有一天,你就会解决出来。

    回忆一:
    之前公司项目从Xcode6.3升级到Xcode7.1直接报错,没法修改,报NSObject错,这个系统级别的错,没法修改,我每天都在想,毕竟这谷歌搜不出来,不知道用什么去描述。我每天都在想,乱想,后面一星期后,我解决了这个问题。

    回忆二:
    由于操作习惯不想记住密码,所以想快速登录QQ,在谷歌上找到了用AppleScript可以实现,但是只能登录一个,那么问题来了,我想登录两个咋办,谷歌上没有解决方案。也许是那么写代码太兴奋了,我一直坚信自己能写出来,如果写不出来今晚我就别睡了,心中一直有这想法,最后晚上十二点半的时候,我居然写出来了,莫名的兴奋,当然那晚是我第三次使用AppleScript,之前没有用过,也不了解。

    场景不用说了,做iOS的都知道,很多时候我们要转换不同类型的东西成字符串,那个方法很长,不知道你有印象没,如何高效率地转换是个头痛的问题,每次用系统那个又臭又长的方法时,心中总是不爽,都会想,有没有更高效的方式来做这件事呢,直到今天,所以有了今天的文章

    
    #ifdef __OBJC__
    #import <Foundation/NSString.h>
    #endif
    
    #if __has_extension(attribute_overloadable)
    
    static inline __attribute__((overloadable)) NSString * stringFrom(id arg) {
        return [NSString stringWithFormat:@"%@", arg];
    }
    
    static inline __attribute__((overloadable)) NSString * stringFrom(char arg) {
        return [NSString stringWithFormat:@"%c", arg];
    }
    
    static inline __attribute__((overloadable)) NSString * stringFrom(unsigned char arg) {
        return [NSString stringWithFormat:@"%c", arg];
    }
    
    static inline __attribute__((overloadable)) NSString * stringFrom(short arg) {
        return [NSString stringWithFormat:@"%hd", arg];
    }
    
    static inline __attribute__((overloadable)) NSString * stringFrom(unsigned short arg) {
        return [NSString stringWithFormat:@"%hu", arg];
    }
    
    static inline __attribute__((overloadable)) NSString * stringFrom(int arg) {
        return [NSString stringWithFormat:@"%d", arg];
    }
    
    static inline __attribute__((overloadable)) NSString * stringFrom(unsigned int arg) {
        return [NSString stringWithFormat:@"%u", arg];
    }
    
    static inline __attribute__((overloadable)) NSString * stringFrom(long arg) {
        return [NSString stringWithFormat:@"%ld", arg];
    }
    
    static inline __attribute__((overloadable)) NSString * stringFrom(unsigned long arg) {
        return [NSString stringWithFormat:@"%lu", arg];
    }
    
    static inline __attribute__((overloadable)) NSString * stringFrom(long long arg) {
        return [NSString stringWithFormat:@"%lld", arg];
    }
    
    static inline __attribute__((overloadable)) NSString * stringFrom(unsigned long long arg) {
        return [NSString stringWithFormat:@"%llu", arg];
    }
    
    static inline __attribute__((overloadable)) NSString * stringFrom(float arg) {
        return [NSString stringWithFormat:@"%f", arg];
    }
    
    static inline __attribute__((overloadable)) NSString * stringFrom(double arg) {
        return [NSString stringWithFormat:@"%f", arg];
    }
    
    #endif
    

    至于NSIntegerNSUIntegerCGFloat直接调用此方法即可,自动转换

    相关文章

      网友评论

          本文标题:iOS效率问题:字符串高效转换

          本文链接:https://www.haomeiwen.com/subject/lozfsxtx.html