【我就看看不说话】常用函数

2024-08-27 07:58
文章标签 函数 常用 看看 说话

本文主要是介绍【我就看看不说话】常用函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、获取本地的语言

[cpp]  view plain copy
  1. + (NSString *)getLocalLanguage  
  2. {  
  3.     NSString *language = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0];  
  4.     return language;  
  5. }  

2、获取Mac地址

[cpp]  view plain copy
  1. // returns the local MAC address.  
  2. + (NSString*) macAddress:(NSString*)interfaceNameOrNil  
  3. {  
  4.     // uses en0 as the default interface name  
  5.     NSString* interfaceName = interfaceNameOrNil;  
  6.     if (interfaceName == nil)  
  7.     {  
  8.         interfaceName = @"en0";  
  9.     }  
  10.       
  11.     int                 mib[6];  
  12.     size_t              len;  
  13.     char                *buf;  
  14.     unsigned char       *ptr;  
  15.     struct if_msghdr    *ifm;  
  16.     struct sockaddr_dl  *sdl;  
  17.       
  18.     mib[0] = CTL_NET;  
  19.     mib[1] = AF_ROUTE;  
  20.     mib[2] = 0;  
  21.     mib[3] = AF_LINK;  
  22.     mib[4] = NET_RT_IFLIST;  
  23.       
  24.     if ((mib[5] = if_nametoindex([interfaceName UTF8String])) == 0)  
  25.     {  
  26.         printf("Error: if_nametoindex error\n");  
  27.         return NULL;  
  28.     }  
  29.       
  30.     if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0)  
  31.     {  
  32.         printf("Error: sysctl, take 1\n");  
  33.         return NULL;  
  34.     }  
  35.       
  36.     if ((buf = malloc(len)) == NULL)  
  37.     {  
  38.         printf("Could not allocate memory. error!\n");  
  39.         return NULL;  
  40.     }  
  41.       
  42.     if (sysctl(mib, 6, buf, &len, NULL, 0) < 0)  
  43.     {  
  44.         printf("Error: sysctl, take 2");  
  45.         free(buf);  
  46.         return NULL;  
  47.     }  
  48.       
  49.     ifm = (struct if_msghdr*) buf;  
  50.     sdl = (struct sockaddr_dl*) (ifm + 1);  
  51.     ptr = (unsigned char*) LLADDR(sdl);  
  52.     NSString *outstring = [NSString stringWithFormat:@"%02X:%02X:%02X:%02X:%02X:%02X",  
  53.                            *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];  
  54.     free(buf);  
  55.       
  56.     return outstring;  
  57. }  

3、微博中获取时间差,(几天前,几小时前,几分钟前)

[cpp]  view plain copy
  1. + (NSString *) getTimeDiffString:(NSTimeInterval) timestamp  
  2. {  
  3.   
  4.     NSCalendar *cal = [NSCalendar currentCalendar];  
  5.     NSDate *todate = [NSDate dateWithTimeIntervalSince1970:timestamp];  
  6.     NSDate *today = [NSDate date];//当前时间  
  7.     unsigned int unitFlag = NSDayCalendarUnit | NSHourCalendarUnit |NSMinuteCalendarUnit;  
  8.     NSDateComponents *gap = [cal components:unitFlag fromDate:today toDate:todate options:0];//计算时间差  
  9.      
  10.     if (ABS([gap day]) > 0)  
  11.     {  
  12.         return [NSString stringWithFormat:@"%d天前", ABS([gap day])];  
  13.     }else if(ABS([gap hour]) > 0)  
  14.     {  
  15.         return [NSString stringWithFormat:@"%d小时前", ABS([gap hour])];  
  16.     }else   
  17.     {  
  18.         return [NSString stringWithFormat:@"%d分钟前",  ABS([gap minute])];  
  19.     }  
  20. }  

4、计算字符串中单词的个数

[cpp]  view plain copy
  1. + (int)countWords:(NSString*)s  
  2. {  
  3.     int i,n=[s length],l=0,a=0,b=0;  
  4.     unichar c;  
  5.     for(i=0;i<n;i++){  
  6.         c=[s characterAtIndex:i];  
  7.         if(isblank(c))  
  8.         {  
  9.             b++;  
  10.         }else if(isascii(c))  
  11.         {  
  12.             a++;  
  13.         }else  
  14.         {  
  15.             l++;  
  16.         }  
  17.     }  
  18.     if(a==0 && l==0)  
  19.     {  
  20.         return 0;  
  21.     }  
  22.     return l+(int)ceilf((float)(a+b)/2.0);  
  23. }  

5、屏幕截图并保存到相册

[cpp]  view plain copy
  1. + (UIImage*)saveImageFromView:(UIView*)view  
  2. {  
  3.     UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, view.layer.contentsScale);  
  4.     [view.layer renderInContext:UIGraphicsGetCurrentContext()];  
  5.     UIImage *image = UIGraphicsGetImageFromCurrentImageContext();  
  6.     UIGraphicsEndImageContext();  
  7.     return image;  
  8. }  
  9.   
  10. + (void)savePhotosAlbum:(UIImage *)image  
  11. {  
  12.     UIImageWriteToSavedPhotosAlbum(image, self, @selector(imageSavedToPhotosAlbum: didFinishSavingWithError: contextInfo:), nil);   
  13. }  
  14.   
  15. + (void)saveImageFromToPhotosAlbum:(UIView*)view  
  16. {  
  17.     UIImage *image = [self saveImageFromView:view];  
  18.     [self savePhotosAlbum:image];  
  19. }  
  20.   
  21. - (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *) contextInfo  
  22. {  
  23.     NSString *message;  
  24.     NSString *title;  
  25.     if (!error) {  
  26.         title = @"成功提示";  
  27.         message = @"成功保存到相";  
  28.     } else {  
  29.         title = @"失败提示";  
  30.         message = [error description];  
  31.     }  
  32.     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title  
  33.                                                     message:message  
  34.                                                    delegate:nil  
  35.                                           cancelButtonTitle:@"知道了"  
  36.                                           otherButtonTitles:nil];  
  37.     [alert show];  
  38.     [alert release];  
  39. }  

5、获取本月,本周,本季度第一天的时间戳

[html]  view plain copy
  1. + (unsigned long long)getFirstDayOfWeek:(unsigned long long)timestamp  
  2. {  
  3.     NSDate *now = [NSDate dateWithTimeIntervalSince1970:timestamp];  
  4.     NSCalendar *cal = [NSCalendar currentCalendar];  
  5.     NSDateComponents *comps = [cal  
  6.                                components:NSYearCalendarUnit| NSMonthCalendarUnit| NSWeekCalendarUnit | NSWeekdayCalendarUnit |NSWeekdayOrdinalCalendarUnit  
  7.                                fromDate:now];  
  8.     if (comps.weekday <2)  
  9.     {  
  10.         comps.week = comps.week-1;  
  11.     }  
  12.     comps.weekday = 2;  
  13.     NSDate *firstDay = [cal dateFromComponents:comps];  
  14.     return [firstDay timeIntervalSince1970];  
  15. }  
  16.   
  17. + (unsigned long long)getFirstDayOfQuarter:(unsigned long long)timestamp  
  18. {  
  19.     NSDate *now = [NSDate dateWithTimeIntervalSince1970:timestamp];  
  20.     NSCalendar *cal = [NSCalendar currentCalendar];  
  21.     NSDateComponents *comps = [cal  
  22.                                components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit  
  23.                                fromDate:now];  
  24.     if (comps.month <=3)  
  25.     {  
  26.         comps.month =  1;  
  27.     }  
  28.     else if(comps.month<=6)  
  29.     {  
  30.         comps.month =  4;  
  31.     }  
  32.     else if(comps.month<=9)  
  33.     {  
  34.         comps.month =  7;  
  35.     }  
  36.     else if(comps.month<=12)  
  37.     {  
  38.         comps.month =  10;  
  39.     }  
  40.           
  41.     comps.day = 1;  
  42.     NSDate *firstDay = [cal dateFromComponents:comps];  
  43.     return [firstDay timeIntervalSince1970]*1000;  
  44. }  
  45.   
  46. + (unsigned long long)getFirstDayOfMonth:(unsigned long long)timestamp  
  47. {  
  48.     NSDate *now = [NSDate dateWithTimeIntervalSince1970:timestamp/1000];  
  49.     NSCalendar *cal = [NSCalendar currentCalendar];  
  50.     NSDateComponents *comps = [cal  
  51.                                components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit  
  52.                                fromDate:now];  
  53.     comps.day = 1;  
  54.     NSDate *firstDay = [cal dateFromComponents:comps];  
  55.     return [firstDay timeIntervalSince1970]*1000;  
  56. }  

6、判断是否越狱

[cpp]  view plain copy
  1. static const char * __jb_app = NULL;  
  2.   
  3. + (BOOL)isJailBroken  
  4. {  
  5.     static const char * __jb_apps[] =  
  6.     {  
  7.         "/Application/Cydia.app",   
  8.         "/Application/limera1n.app",   
  9.         "/Application/greenpois0n.app",   
  10.         "/Application/blackra1n.app",  
  11.         "/Application/blacksn0w.app",  
  12.         "/Application/redsn0w.app",  
  13.         NULL  
  14.     };  
  15.   
  16.     __jb_app = NULL;  
  17.   
  18.     // method 1  
  19.     for ( int i = 0; __jb_apps[i]; ++i )  
  20.     {  
  21.         if ( [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithUTF8String:__jb_apps[i]]] )  
  22.         {  
  23.             __jb_app = __jb_apps[i];  
  24.             return YES;  
  25.         }  
  26.     }  
  27.       
  28.     // method 2  
  29.     if ( [[NSFileManager defaultManager] fileExistsAtPath:@"/private/var/lib/apt/"] )  
  30.     {  
  31.         return YES;  
  32.     }  
  33.       
  34.     // method 3  
  35.     if ( 0 == system("ls") )  
  36.     {  
  37.         return YES;  
  38.     }  
  39.       
  40.     return NO;    
  41. }  
  42.   
  43. + (NSString *)jailBreaker  
  44. {  
  45.     if ( __jb_app )  
  46.     {  
  47.         return [NSString stringWithUTF8String:__jb_app];  
  48.     }  
  49.     else  
  50.     {  
  51.         return @"";  
  52.     }  
  53. }  

7、定义单例的宏

[cpp]  view plain copy
  1. #undef  AS_SINGLETON  
  2. #define AS_SINGLETON( __class ) \  
  3.         + (__class *)sharedInstance;  
  4.   
  5. #undef  DEF_SINGLETON  
  6. #define DEF_SINGLETON( __class ) \  
  7.         + (__class *)sharedInstance \  
  8.         { \  
  9.             static dispatch_once_t once; \  
  10.             static __class * __singleton__; \  
  11.             dispatch_once( &once, ^{ __singleton__ = [[__class alloc] init]; } ); \  
  12.             return __singleton__; \  
  13.         }  

8、网络状态检测

[cpp]  view plain copy
  1. - (void)reachabilityChanged:(NSNotification *)note {  
  2.     Reachability* curReach = [note object];  
  3.     NSParameterAssert([curReach isKindOfClass: [Reachability class]]);  
  4.     NetworkStatus status = [curReach currentReachabilityStatus];  
  5.       
  6.     if (status == NotReachable)  
  7.     {  
  8.           
  9.     }  
  10.     else if(status == kReachableViaWiFi)  
  11.     {  
  12.           
  13.     }  
  14.     else if(status == kReachableViaWWAN)  
  15.     {  
  16.           
  17.     }  
  18.       
  19. }  
  20.   
  21. - (void)setNetworkNotification  
  22. {  
  23.     [[NSNotificationCenter defaultCenter] addObserver:self  
  24.                                              selector:@selector(reachabilityChanged:)  
  25.                                                  name: kReachabilityChangedNotification  
  26.                                                object: nil];  
  27.     _hostReach = [[Reachability reachabilityWithHostName:@"http://www.baidu.com"] retain];  
  28.     [_hostReach startNotifier];  
  29. }  

9、添加推送消息

[cpp]  view plain copy
  1. - (void)setPushNotification  
  2. {  
  3.     [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound];  
  4. }  
  5.   
  6.   
  7. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {  
  8.     NSLog(@"获取设备的deviceToken: %@", deviceToken);  
  9. }  
  10.   
  11. - (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error{  
  12.       
  13.     NSLog(@"Failed to get token, error: %@", error);  
  14. }  

10、16进制颜色转UIColor

[cpp]  view plain copy
  1. + (UIColor *)colorWithHex:(NSString *)hex {  
  2.     // Remove `#` and `0x`  
  3.     if ([hex hasPrefix:@"#"]) {  
  4.         hex = [hex substringFromIndex:1];  
  5.     } else if ([hex hasPrefix:@"0x"]) {  
  6.         hex = [hex substringFromIndex:2];  
  7.     }  
  8.   
  9.     // Invalid if not 3, 6, or 8 characters  
  10.     NSUInteger length = [hex length];  
  11.     if (length != 3 && length != 6 && length != 8) {  
  12.         return nil;  
  13.     }  
  14.   
  15.     // Make the string 8 characters long for easier parsing  
  16.     if (length == 3) {  
  17.         NSString *r = [hex substringWithRange:NSMakeRange(0, 1)];  
  18.         NSString *g = [hex substringWithRange:NSMakeRange(1, 1)];  
  19.         NSString *b = [hex substringWithRange:NSMakeRange(2, 1)];  
  20.         hex = [NSString stringWithFormat:@"%@%@%@%@%@%@ff",  
  21.                r, r, g, g, b, b];  
  22.     } else if (length == 6) {  
  23.         hex = [hex stringByAppendingString:@"ff"];  
  24.     }  
  25.   
  26.     CGFloat red = [[hex substringWithRange:NSMakeRange(0, 2)] _hexValue] / 255.0f;  
  27.     CGFloat green = [[hex substringWithRange:NSMakeRange(2, 2)] _hexValue] / 255.0f;  
  28.     CGFloat blue = [[hex substringWithRange:NSMakeRange(4, 2)] _hexValue] / 255.0f;  
  29.     CGFloat alpha = [[hex substringWithRange:NSMakeRange(6, 2)] _hexValue] / 255.0f;  
  30.   
  31.     return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];  
  32. }  

这篇关于【我就看看不说话】常用函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111089

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

019、JOptionPane类的常用静态方法详解

目录 JOptionPane类的常用静态方法详解 1. showInputDialog()方法 1.1基本用法 1.2带有默认值的输入框 1.3带有选项的输入对话框 1.4自定义图标的输入对话框 2. showConfirmDialog()方法 2.1基本用法 2.2自定义按钮和图标 2.3带有自定义组件的确认对话框 3. showMessageDialog()方法 3.1

函数式编程思想

我们经常会用到各种各样的编程思想,例如面向过程、面向对象。不过笔者在该博客简单介绍一下函数式编程思想. 如果对函数式编程思想进行概括,就是f(x) = na(x) , y=uf(x)…至于其他的编程思想,可能是y=a(x)+b(x)+c(x)…,也有可能是y=f(x)=f(x)/a + f(x)/b+f(x)/c… 面向过程的指令式编程 面向过程,简单理解就是y=a(x)+b(x)+c(x)

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX