1、获取本地的语言
+ (NSString *)getLocalLanguage { NSString *language = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0]; return language; }
// returns the local MAC address. + (NSString*) macAddress:(NSString*)interfaceNameOrNil { // uses en0 as the default interface name NSString* interfaceName = interfaceNameOrNil; if (interfaceName == nil) { interfaceName = @"en0"; } int mib[6]; size_t len; char *buf; unsigned char *ptr; struct if_msghdr *ifm; struct sockaddr_dl *sdl; mib[0] = CTL_NET; mib[1] = AF_ROUTE; mib[2] = 0; mib[3] = AF_LINK; mib[4] = NET_RT_IFLIST; if ((mib[5] = if_nametoindex([interfaceName UTF8String])) == 0) { printf("Error: if_nametoindex error\n"); return NULL; } if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0) { printf("Error: sysctl, take 1\n"); return NULL; } if ((buf = malloc(len)) == NULL) { printf("Could not allocate memory. error!\n"); return NULL; } if (sysctl(mib, 6, buf, &len, NULL, 0) < 0) { printf("Error: sysctl, take 2"); free(buf); return NULL; } ifm = (struct if_msghdr*) buf; sdl = (struct sockaddr_dl*) (ifm + 1); ptr = (unsigned char*) LLADDR(sdl); NSString *outstring = [NSString stringWithFormat:@"%02X:%02X:%02X:%02X:%02X:%02X", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)]; free(buf); return outstring; }
+ (NSString *) getTimeDiffString:(NSTimeInterval) timestamp { NSCalendar *cal = [NSCalendar currentCalendar]; NSDate *todate = [NSDate dateWithTimeIntervalSince1970:timestamp]; NSDate *today = [NSDate date];//当前时间 unsigned int unitFlag = NSDayCalendarUnit | NSHourCalendarUnit |NSMinuteCalendarUnit; NSDateComponents *gap = [cal components:unitFlag fromDate:today toDate:todate options:0];//计算时间差 if (ABS([gap day]) > 0) { return [NSString stringWithFormat:@"%d天前", ABS([gap day])]; }else if(ABS([gap hour]) > 0) { return [NSString stringWithFormat:@"%d小时前", ABS([gap hour])]; }else { return [NSString stringWithFormat:@"%d分钟前", ABS([gap minute])]; } }
+ (int)countWords:(NSString*)s { int i,n=[s length],l=0,a=0,b=0; unichar c; for(i=0;i<n;i++){ c=[s characterAtIndex:i]; if(isblank(c)) { b++; }else if(isascii(c)) { a++; }else { l++; } } if(a==0 && l==0) { return 0; } return l+(int)ceilf((float)(a+b)/2.0); }
+ (UIImage*)saveImageFromView:(UIView*)view { UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, view.layer.contentsScale); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; } + (void)savePhotosAlbum:(UIImage *)image { UIImageWriteToSavedPhotosAlbum(image, self, @selector(imageSavedToPhotosAlbum: didFinishSavingWithError: contextInfo:), nil); } + (void)saveImageFromToPhotosAlbum:(UIView*)view { UIImage *image = [self saveImageFromView:view]; [self savePhotosAlbum:image]; } - (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *) contextInfo { NSString *message; NSString *title; if (!error) { title = @"成功提示"; message = @"成功保存到相"; } else { title = @"失败提示"; message = [error description]; } UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"知道了" otherButtonTitles:nil]; [alert show]; [alert release]; }
+ (unsigned long long)getFirstDayOfWeek:(unsigned long long)timestamp { NSDate *now = [NSDate dateWithTimeIntervalSince1970:timestamp]; NSCalendar *cal = [NSCalendar currentCalendar]; NSDateComponents *comps = [cal components:NSYearCalendarUnit| NSMonthCalendarUnit| NSWeekCalendarUnit | NSWeekdayCalendarUnit |NSWeekdayOrdinalCalendarUnit fromDate:now]; if (comps.weekday <2) { comps.week = comps.week-1; } comps.weekday = 2; NSDate *firstDay = [cal dateFromComponents:comps]; return [firstDay timeIntervalSince1970]; } + (unsigned long long)getFirstDayOfQuarter:(unsigned long long)timestamp { NSDate *now = [NSDate dateWithTimeIntervalSince1970:timestamp]; NSCalendar *cal = [NSCalendar currentCalendar]; NSDateComponents *comps = [cal components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:now]; if (comps.month <=3) { comps.month = 1; } else if(comps.month<=6) { comps.month = 4; } else if(comps.month<=9) { comps.month = 7; } else if(comps.month<=12) { comps.month = 10; } comps.day = 1; NSDate *firstDay = [cal dateFromComponents:comps]; return [firstDay timeIntervalSince1970]*1000; } + (unsigned long long)getFirstDayOfMonth:(unsigned long long)timestamp { NSDate *now = [NSDate dateWithTimeIntervalSince1970:timestamp/1000]; NSCalendar *cal = [NSCalendar currentCalendar]; NSDateComponents *comps = [cal components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:now]; comps.day = 1; NSDate *firstDay = [cal dateFromComponents:comps]; return [firstDay timeIntervalSince1970]*1000; }
6、判断是否越狱
static const char * __jb_app = NULL; + (BOOL)isJailBroken { static const char * __jb_apps[] = { "/Application/Cydia.app", "/Application/limera1n.app", "/Application/greenpois0n.app", "/Application/blackra1n.app", "/Application/blacksn0w.app", "/Application/redsn0w.app", NULL }; __jb_app = NULL; // method 1 for ( int i = 0; __jb_apps[i]; ++i ) { if ( [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithUTF8String:__jb_apps[i]]] ) { __jb_app = __jb_apps[i]; return YES; } } // method 2 if ( [[NSFileManager defaultManager] fileExistsAtPath:@"/private/var/lib/apt/"] ) { return YES; } // method 3 if ( 0 == system("ls") ) { return YES; } return NO; } + (NSString *)jailBreaker { if ( __jb_app ) { return [NSString stringWithUTF8String:__jb_app]; } else { return @""; } }
#undef AS_SINGLETON #define AS_SINGLETON( __class ) \ + (__class *)sharedInstance; #undef DEF_SINGLETON #define DEF_SINGLETON( __class ) \ + (__class *)sharedInstance \ { \ static dispatch_once_t once; \ static __class * __singleton__; \ dispatch_once( &once, ^{ __singleton__ = [[__class alloc] init]; } ); \ return __singleton__; \ }
- (void)reachabilityChanged:(NSNotification *)note { Reachability* curReach = [note object]; NSParameterAssert([curReach isKindOfClass: [Reachability class]]); NetworkStatus status = [curReach currentReachabilityStatus]; if (status == NotReachable) { } else if(status == kReachableViaWiFi) { } else if(status == kReachableViaWWAN) { } } - (void)setNetworkNotification { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil]; _hostReach = [[Reachability reachabilityWithHostName:@"http://www.baidu.com"] retain]; [_hostReach startNotifier]; }
- (void)setPushNotification { [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound]; } - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSLog(@"获取设备的deviceToken: %@", deviceToken); } - (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error{ NSLog(@"Failed to get token, error: %@", error); }
10、16进制颜色转UIColor
+ (UIColor *)colorWithHex:(NSString *)hex { // Remove `#` and `0x` if ([hex hasPrefix:@"#"]) { hex = [hex substringFromIndex:1]; } else if ([hex hasPrefix:@"0x"]) { hex = [hex substringFromIndex:2]; } // Invalid if not 3, 6, or 8 characters NSUInteger length = [hex length]; if (length != 3 && length != 6 && length != 8) { return nil; } // Make the string 8 characters long for easier parsing if (length == 3) { NSString *r = [hex substringWithRange:NSMakeRange(0, 1)]; NSString *g = [hex substringWithRange:NSMakeRange(1, 1)]; NSString *b = [hex substringWithRange:NSMakeRange(2, 1)]; hex = [NSString stringWithFormat:@"%@%@%@%@%@%@ff", r, r, g, g, b, b]; } else if (length == 6) { hex = [hex stringByAppendingString:@"ff"]; } CGFloat red = [[hex substringWithRange:NSMakeRange(0, 2)] _hexValue] / 255.0f; CGFloat green = [[hex substringWithRange:NSMakeRange(2, 2)] _hexValue] / 255.0f; CGFloat blue = [[hex substringWithRange:NSMakeRange(4, 2)] _hexValue] / 255.0f; CGFloat alpha = [[hex substringWithRange:NSMakeRange(6, 2)] _hexValue] / 255.0f; return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; }