1. Obtain the local language
+ (NSString *)getLocalLanguage{ NSString *language = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0]; return language;}
2. Obtain the MAC address
// 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;}
3. Get Time Difference on Weibo (several days ago, several hours ago, several minutes ago)
+ (Nsstring *) gettimediffstring :( nstimeinterval) timestamp {nscalendar * Cal = [nscalendar currentcalendar]; nsdate * todate = [nsdate expires: Timestamp]; nsdate * today = [nsdate date]; // current time unsigned int unitflag = nsdaycalendarunit | nshourcalendarunit | nsminutecalendarunit; nsdatecomponents * Gap = [Cal components: unitflag fromdate: Today todate: todate options: 0]; // calculate the time difference if (ABS ([Gap Day])> 0) {return [nsstring stringwithformat: @ "% d days ago", ABS ([Gap Day])];} else if (ABS ([gap hour])> 0) {return [nsstring stringwithformat: @ "% d Hours Ago", ABS ([gap hour])];} else {return [nsstring stringwithformat: @ "% D Minutes Ago", ABS ([gap minute])];}
4. Calculate the number of words in a string.
+ (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);}
5. Screen and save to album
+ (Uiimage *) saveimagefromview :( uiview *) view {uigraphicsbeginimagecontextwitexceptions (view. bounds. size, yes, view. layer. contentsscale); [view. layer renderincontext: uigraphicsgetcurrentcontext ()]; uiimage * image = encrypt (); uigraphicsendimagecontext (); Return image;} + (void) savephotosalbum :( uiimage *) image {encrypt (image, self, @ selector (Images Avedtophotosalbum: didfinishsavingwitherror: contextinfo :), nil);} + (void) preview :( 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 = @ "Success prompt"; message = @ "successfully saved to phase";} else {Title = @ "Failure prompt"; message = [error description];} uialertview * Alert = [[uialertview alloc] initwithtitle: Title message: Message delegate: Nil cancelbuttontitle: @ "know" otherbuttontitles: Nil]; [alert show]; [alert release];}
5. Obtain the timestamp of this month, this week, and the first day of this quarter.
+ (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. Determine whether to jailbreak
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 2if ( [[NSFileManager defaultManager] fileExistsAtPath:@"/private/var/lib/apt/"] ){return YES;}// method 3if ( 0 == system("ls") ){return YES;} return NO;}+ (NSString *)jailBreaker{if ( __jb_app ){return [NSString stringWithUTF8String:__jb_app];}else{return @"";}}
7. Define the macro of the singleton
#undefAS_SINGLETON#define AS_SINGLETON( __class ) \+ (__class *)sharedInstance;#undefDEF_SINGLETON#define DEF_SINGLETON( __class ) \+ (__class *)sharedInstance \{ \static dispatch_once_t once; \static __class * __singleton__; \dispatch_once( &once, ^{ __singleton__ = [[__class alloc] init]; } ); \return __singleton__; \}
8. Network status detection
- (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];}
9. add push messages
-(Void) setpushnotification {[[uiapplication sharedapplication] metadata: uiremotenotificationtypealert | uiremotenotiftypetypebadge | uiremotenotiftypetypesound];}-(void) Application :( uiapplication *) Application metadata :( nsdata *) devicetoken {nslog (@ "Get devicetoken: % @", devicetoken);}-(void) Application :( uiapplication *) Application didfailtoregisterforremotenotificationswitherror :( nserror *) error {nslog (@ "failed to get token, error: % @", error );}
10, hexadecimal color to 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 charactersNSUInteger length = [hex length];if (length != 3 && length != 6 && length != 8) {return nil;}// Make the string 8 characters long for easier parsingif (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];}