1、获取本地的语言
[cpp]view plaincopy
+ (NSString *)getLocalLanguage
{
NSString *language = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0];
returnlanguage;
}
2、获取Mac地址
[cpp]view plaincopy
// returns the local MAC address.
+ (NSString*) macAddress:(NSString*)interfaceNameOrNil
{
// uses en0 as the default interface name
NSString* interfaceName = interfaceNameOrNil;
if(interfaceName == nil)
{
interfaceName = @"en0";
}
intmib[6];
size_tlen;
char*buf;
unsignedchar*ptr;
structif_msghdr *ifm;
structsockaddr_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");
returnNULL;
}
if(sysctl(mib, 6, NULL, &len, NULL, 0) < 0)
{
printf("Error: sysctl, take 1\n");
returnNULL;
}
if((buf = malloc(len)) == NULL)
{
printf("Could not allocate memory. error!\n");
returnNULL;
}
if(sysctl(mib, 6, buf, &len, NULL, 0) < 0)
{
printf("Error: sysctl, take 2");
free(buf);
returnNULL;
}
ifm = (structif_msghdr*) buf;
sdl = (structsockaddr_dl*) (ifm + 1);
ptr = (unsignedchar*) 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);
returnoutstring;
}
3、微博中获取时间差,(几天前,几小时前,几分钟前)
[cpp]view plaincopy
+ (NSString *) getTimeDiffString:(NSTimeInterval) timestamp
{
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *todate = [NSDate dateWithTimeIntervalSince1970:timestamp];
NSDate *today = [NSDate date];//当前时间
unsignedintunitFlag = 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])];
}elseif(ABS([gap hour]) > 0)
{
return[NSString stringWithFormat:@"%d小时前", ABS([gap hour])];
}else
{
return[NSString stringWithFormat:@"%d分钟前", ABS([gap minute])];
}
}
4、计算字符串中单词的个数
[cpp]view plaincopy
+ (int)countWords:(NSString*)s
{
inti,n=[s length],l=0,a=0,b=0;
unichar c;
for(i=0;i
c=[s characterAtIndex:i];
if(isblank(c))
{
b++;
}elseif(isascii(c))
{
a++;
}else
{
l++;
}
}
if(a==0 && l==0)
{
return0;
}
returnl+(int)ceilf((float)(a+b)/2.0);
}
5、屏幕截图并保存到相册
[cpp]view plaincopy
+ (UIImage*)saveImageFromView:(UIView*)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, view.layer.contentsScale);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
returnimage;
}
+ (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];
}
5、获取本月,本周,本季度第一天的时间戳
[html]view plaincopy
+ (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、判断是否越狱
[cpp]view plaincopy
staticconstchar* __jb_app = NULL;
+ (BOOL)isJailBroken
{
staticconstchar* __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(inti = 0; __jb_apps[i]; ++i )
{
if( [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithUTF8String:__jb_apps[i]]] )
{
__jb_app = __jb_apps[i];
returnYES;
}
}
// method 2
if( [[NSFileManager defaultManager] fileExistsAtPath:@"/private/var/lib/apt/"] )
{
returnYES;
}
// method 3
if( 0 == system("ls") )
{
returnYES;
}
returnNO;
}
+ (NSString *)jailBreaker
{
if( __jb_app )
{
return[NSString stringWithUTF8String:__jb_app];
}
else
{
return@"";
}
}
7、定义单例的宏
[cpp]view plaincopy
#undef AS_SINGLETON
#define AS_SINGLETON( __class ) \
+ (__class *)sharedInstance;
#undef DEF_SINGLETON
#define DEF_SINGLETON( __class ) \
+ (__class *)sharedInstance \
{ \
staticdispatch_once_t once; \
static__class * __singleton__; \
dispatch_once( &once, ^{ __singleton__ = [[__class alloc] init]; } ); \
return__singleton__; \
}
8、网络状态检测
[cpp]view plaincopy
- (void)reachabilityChanged:(NSNotification *)note {
Reachability* curReach = [note object];
NSParameterAssert([curReach isKindOfClass: [Reachabilityclass]]);
NetworkStatus status = [curReach currentReachabilityStatus];
if(status == NotReachable)
{
}
elseif(status == kReachableViaWiFi)
{
}
elseif(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、添加推送消息
[cpp]view plaincopy
- (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
[cpp]view plaincopy
+ (UIColor *)colorWithHex:(NSString *)hex {
// Remove `#` and `0x`
if([hex hasPrefix:@"#"]) {
hex = [hex substringFromIndex:1];
}elseif([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) {
returnnil;
}
// 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];
}elseif(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];
}