亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS常用的公共方法詳解

2020-07-26 03:00:11
字體:
來源:轉載
供稿:網友

1. 獲取磁盤總空間大小

//磁盤總空間+ (CGFloat)diskOfAllSizeMBytes{ CGFloat size = 0.0; NSError *error; NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error]; if (error) {#ifdef DEBUG NSLog(@"error: %@", error.localizedDescription);#endif }else{ NSNumber *number = [dic objectForKey:NSFileSystemSize]; size = [number floatValue]/1024/1024; } return size;}

2. 獲取磁盤可用空間大小

//磁盤可用空間+ (CGFloat)diskOfFreeSizeMBytes{ CGFloat size = 0.0; NSError *error; NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error]; if (error) {#ifdef DEBUG NSLog(@"error: %@", error.localizedDescription);#endif }else{ NSNumber *number = [dic objectForKey:NSFileSystemFreeSize]; size = [number floatValue]/1024/1024; } return size;}

3. 獲取指定路徑下某個文件的大小

//獲取文件大小+ (long long)fileSizeAtPath:(NSString *)filePath{ NSFileManager *fileManager = [NSFileManager defaultManager]; if (![fileManager fileExistsAtPath:filePath]) return 0; return [[fileManager attributesOfItemAtPath:filePath error:nil] fileSize];}

4. 獲取文件夾下所有文件的大小

//獲取文件夾下所有文件的大小+ (long long)folderSizeAtPath:(NSString *)folderPath{ NSFileManager *fileManager = [NSFileManager defaultManager]; if (![fileManager fileExistsAtPath:folderPath]) return 0; NSEnumerator *filesEnumerator = [[fileManager subpathsAtPath:folderPath] objectEnumerator]; NSString *fileName; long long folerSize = 0; while ((fileName = [filesEnumerator nextObject]) != nil) { NSString *filePath = [folderPath stringByAppendingPathComponent:fileName]; folerSize += [self fileSizeAtPath:filePath]; } return folerSize;}

5. 獲取字符串(或漢字)首字母

//獲取字符串(或漢字)首字母+ (NSString *)firstCharacterWithString:(NSString *)string{ NSMutableString *str = [NSMutableString stringWithString:string]; CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformMandarinLatin, NO); CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformStripDiacritics, NO); NSString *pingyin = [str capitalizedString]; return [pingyin substringToIndex:1];}

6. 將字符串數組按照元素首字母順序進行排序分組

//將字符串數組按照元素首字母順序進行排序分組+ (NSDictionary *)dictionaryOrderByCharacterWithOriginalArray:(NSArray *)array{ if (array.count == 0) { return nil; } for (id obj in array) { if (![obj isKindOfClass:[NSString class]]) {  return nil; } } UILocalizedIndexedCollation *indexedCollation = [UILocalizedIndexedCollation currentCollation]; NSMutableArray *objects = [NSMutableArray arrayWithCapacity:indexedCollation.sectionTitles.count]; //創建27個分組數組 for (int i = 0; i < indexedCollation.sectionTitles.count; i++) { NSMutableArray *obj = [NSMutableArray array]; [objects addObject:obj]; } NSMutableArray *keys = [NSMutableArray arrayWithCapacity:objects.count]; //按字母順序進行分組 NSInteger lastIndex = -1; for (int i = 0; i < array.count; i++) { NSInteger index = [indexedCollation sectionForObject:array[i] collationStringSelector:@selector(uppercaseString)]; [[objects objectAtIndex:index] addObject:array[i]]; lastIndex = index; } //去掉空數組 for (int i = 0; i < objects.count; i++) { NSMutableArray *obj = objects[i]; if (obj.count == 0) {  [objects removeObject:obj]; } } //獲取索引字母 for (NSMutableArray *obj in objects) { NSString *str = obj[0]; NSString *key = [self firstCharacterWithString:str]; [keys addObject:key]; } NSMutableDictionary *dic = [NSMutableDictionary dictionary]; [dic setObject:objects forKey:keys]; return dic;}//獲取字符串(或漢字)首字母+ (NSString *)firstCharacterWithString:(NSString *)string{ NSMutableString *str = [NSMutableString stringWithString:string]; CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformMandarinLatin, NO); CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformStripDiacritics, NO); NSString *pingyin = [str capitalizedString]; return [pingyin substringToIndex:1];}

使用如下:

NSArray *arr = @[@"guangzhou", @"shanghai", @"北京", @"henan", @"hainan"];NSDictionary *dic = [Utilities dictionaryOrderByCharacterWithOriginalArray:arr];NSLog(@"/n/ndic: %@", dic);

輸出結果如下:

輸出結果

7. 獲取當前時間

//獲取當前時間//format: @"yyyy-MM-dd HH:mm:ss"、@"yyyy年MM月dd日 HH時mm分ss秒"+ (NSString *)currentDateWithFormat:(NSString *)format{ NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:format]; return [dateFormatter stringFromDate:[NSDate date]];}

8. 計算上次日期距離現在多久, 如 xx 小時前、xx 分鐘前等

/** * 計算上次日期距離現在多久 * * @param lastTime 上次日期(需要和格式對應) * @param format1  上次日期格式 * @param currentTime 最近日期(需要和格式對應) * @param format2  最近日期格式 * * @return xx分鐘前、xx小時前、xx天前 */+ (NSString *)timeIntervalFromLastTime:(NSString *)lastTime      lastTimeFormat:(NSString *)format1       ToCurrentTime:(NSString *)currentTime      currentTimeFormat:(NSString *)format2{ //上次時間 NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc]init]; dateFormatter1.dateFormat = format1; NSDate *lastDate = [dateFormatter1 dateFromString:lastTime]; //當前時間 NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc]init]; dateFormatter2.dateFormat = format2; NSDate *currentDate = [dateFormatter2 dateFromString:currentTime]; return [Utilities timeIntervalFromLastTime:lastDate ToCurrentTime:currentDate];}+ (NSString *)timeIntervalFromLastTime:(NSDate *)lastTime ToCurrentTime:(NSDate *)currentTime{ NSTimeZone *timeZone = [NSTimeZone systemTimeZone]; //上次時間 NSDate *lastDate = [lastTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:lastTime]]; //當前時間 NSDate *currentDate = [currentTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:currentTime]]; //時間間隔 NSInteger intevalTime = [currentDate timeIntervalSinceReferenceDate] - [lastDate timeIntervalSinceReferenceDate]; //秒、分、小時、天、月、年 NSInteger minutes = intevalTime / 60; NSInteger hours = intevalTime / 60 / 60; NSInteger day = intevalTime / 60 / 60 / 24; NSInteger month = intevalTime / 60 / 60 / 24 / 30; NSInteger yers = intevalTime / 60 / 60 / 24 / 365; if (minutes <= 10) {  return @"剛剛"; }else if (minutes < 60){  return [NSString stringWithFormat: @"%ld分鐘前",(long)minutes]; }else if (hours < 24){  return [NSString stringWithFormat: @"%ld小時前",(long)hours]; }else if (day < 30){  return [NSString stringWithFormat: @"%ld天前",(long)day]; }else if (month < 12){  NSDateFormatter * df =[[NSDateFormatter alloc]init];  df.dateFormat = @"M月d日";  NSString * time = [df stringFromDate:lastDate];  return time; }else if (yers >= 1){  NSDateFormatter * df =[[NSDateFormatter alloc]init];  df.dateFormat = @"yyyy年M月d日";  NSString * time = [df stringFromDate:lastDate];  return time; } return @"";}

使用如下:

NSLog(@"/n/nresult: %@", [Utilities timeIntervalFromLastTime:@"2015年12月8日 15:50"lastTimeFormat:@"yyyy年MM月dd日 HH:mm"ToCurrentTime:@"2015/12/08 16:12"currentTimeFormat:@"yyyy/MM/dd HH:mm"]);

輸出結果如下:

輸出結果

9. 判斷手機號碼格式是否正確

//判斷手機號碼格式是否正確+ (BOOL)valiMobile:(NSString *)mobile{ mobile = [mobile stringByReplacingOccurrencesOfString:@" " withString:@""]; if (mobile.length != 11) {  return NO; }else{  /**   * 移動號段正則表達式   */  NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))//d{8}|(1705)//d{7}$";  /**   * 聯通號段正則表達式   */  NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))//d{8}|(1709)//d{7}$";  /**   * 電信號段正則表達式   */  NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))//d{8}$";  NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];  BOOL isMatch1 = [pred1 evaluateWithObject:mobile];  NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];  BOOL isMatch2 = [pred2 evaluateWithObject:mobile];  NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];  BOOL isMatch3 = [pred3 evaluateWithObject:mobile];  if (isMatch1 || isMatch2 || isMatch3) {   return YES;  }else{   return NO;  } }}

10. 判斷郵箱格式是否正確

//利用正則表達式驗證+ (BOOL)isAvailableEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+//.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; return [emailTest evaluateWithObject:email];}

11. 將十六進制顏色轉換為 UIColor 對象

//將十六進制顏色轉換為 UIColor 對象+ (UIColor *)colorWithHexString:(NSString *)color{ NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString]; // String should be 6 or 8 characters if ([cString length] < 6) {  return [UIColor clearColor]; } // strip "0X" or "#" if it appears if ([cString hasPrefix:@"0X"])  cString = [cString substringFromIndex:2]; if ([cString hasPrefix:@"#"])  cString = [cString substringFromIndex:1]; if ([cString length] != 6)  return [UIColor clearColor]; // Separate into r, g, b substrings NSRange range; range.location = 0; range.length = 2; //r NSString *rString = [cString substringWithRange:range]; //g range.location = 2; NSString *gString = [cString substringWithRange:range]; //b range.location = 4; NSString *bString = [cString substringWithRange:range]; // Scan values unsigned int r, g, b; [[NSScanner scannerWithString:rString] scanHexInt:&r]; [[NSScanner scannerWithString:gString] scanHexInt:&g]; [[NSScanner scannerWithString:bString] scanHexInt:&b]; return [UIColor colorWithRed:((float) r / 255.0f) green:((float) g / 255.0f) blue:((float) b / 255.0f) alpha:1.0f];}

12. 對圖片進行濾鏡處理

#pragma mark - 對圖片進行濾鏡處理// 懷舊 --> CIPhotoEffectInstant       單色 --> CIPhotoEffectMono// 黑白 --> CIPhotoEffectNoir       褪色 --> CIPhotoEffectFade// 色調 --> CIPhotoEffectTonal       沖印 --> CIPhotoEffectProcess// 歲月 --> CIPhotoEffectTransfer      鉻黃 --> CIPhotoEffectChrome// CILinearToSRGBToneCurve, CISRGBToneCurveToLinear, CIGaussianBlur, CIBoxBlur, CIDiscBlur, CISepiaTone, CIDepthOfField+ (UIImage *)filterWithOriginalImage:(UIImage *)image filterName:(NSString *)name{ CIContext *context = [CIContext contextWithOptions:nil]; CIImage *inputImage = [[CIImage alloc] initWithImage:image]; CIFilter *filter = [CIFilter filterWithName:name]; [filter setValue:inputImage forKey:kCIInputImageKey]; CIImage *result = [filter valueForKey:kCIOutputImageKey]; CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]]; UIImage *resultImage = [UIImage imageWithCGImage:cgImage]; CGImageRelease(cgImage); return resultImage;}

13. 對圖片進行模糊處理

#pragma mark - 對圖片進行模糊處理// CIGaussianBlur ---> 高斯模糊// CIBoxBlur  ---> 均值模糊(Available in iOS 9.0 and later)// CIDiscBlur  ---> 環形卷積模糊(Available in iOS 9.0 and later)// CIMedianFilter ---> 中值模糊, 用于消除圖像噪點, 無需設置radius(Available in iOS 9.0 and later)// CIMotionBlur ---> 運動模糊, 用于模擬相機移動拍攝時的掃尾效果(Available in iOS 9.0 and later)+ (UIImage *)blurWithOriginalImage:(UIImage *)image blurName:(NSString *)name radius:(NSInteger)radius{ CIContext *context = [CIContext contextWithOptions:nil]; CIImage *inputImage = [[CIImage alloc] initWithImage:image]; CIFilter *filter; if (name.length != 0) {  filter = [CIFilter filterWithName:name];  [filter setValue:inputImage forKey:kCIInputImageKey];  if (![name isEqualToString:@"CIMedianFilter"]) {   [filter setValue:@(radius) forKey:@"inputRadius"];  }  CIImage *result = [filter valueForKey:kCIOutputImageKey];  CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]];  UIImage *resultImage = [UIImage imageWithCGImage:cgImage];  CGImageRelease(cgImage);  return resultImage; }else{  return nil; }}

14. 調整圖片飽和度、亮度、對比度

/** * 調整圖片飽和度, 亮度, 對比度 * * @param image  目標圖片 * @param saturation 飽和度 * @param brightness 亮度: -1.0 ~ 1.0 * @param contrast 對比度 * */+ (UIImage *)colorControlsWithOriginalImage:(UIImage *)image         saturation:(CGFloat)saturation         brightness:(CGFloat)brightness         contrast:(CGFloat)contrast{ CIContext *context = [CIContext contextWithOptions:nil]; CIImage *inputImage = [[CIImage alloc] initWithImage:image]; CIFilter *filter = [CIFilter filterWithName:@"CIColorControls"]; [filter setValue:inputImage forKey:kCIInputImageKey]; [filter setValue:@(saturation) forKey:@"inputSaturation"]; [filter setValue:@(brightness) forKey:@"inputBrightness"]; [filter setValue:@(contrast) forKey:@"inputContrast"]; CIImage *result = [filter valueForKey:kCIOutputImageKey]; CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]]; UIImage *resultImage = [UIImage imageWithCGImage:cgImage]; CGImageRelease(cgImage); return resultImage;}

15. 創建一張實時模糊效果 View (毛玻璃效果)

//Avilable in iOS 8.0 and later+ (UIVisualEffectView *)effectViewWithFrame:(CGRect)frame{ UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:effect]; effectView.frame = frame; return effectView;}

16. 全屏截圖

//全屏截圖+ (UIImage *)shotScreen{ UIWindow *window = [UIApplication sharedApplication].keyWindow; UIGraphicsBeginImageContext(window.bounds.size); [window.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image;}

17. 截取一張 view 生成圖片

//截取view生成一張圖片+ (UIImage *)shotWithView:(UIView *)view{ UIGraphicsBeginImageContext(view.bounds.size); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image;}

18. 截取view中某個區域生成一張圖片

//截取view中某個區域生成一張圖片

+ (UIImage *)shotWithView:(UIView *)view scope:(CGRect)scope{ CGImageRef imageRef = CGImageCreateWithImageInRect([self shotWithView:view].CGImage, scope); UIGraphicsBeginImageContext(scope.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGRect rect = CGRectMake(0, 0, scope.size.width, scope.size.height); CGContextTranslateCTM(context, 0, rect.size.height);//下移 CGContextScaleCTM(context, 1.0f, -1.0f);//上翻 CGContextDrawImage(context, rect, imageRef); UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); CGImageRelease(imageRef); CGContextRelease(context); return image;}

19. 壓縮圖片到指定尺寸大小

//壓縮圖片到指定尺寸大小+ (UIImage *)compressOriginalImage:(UIImage *)image toSize:(CGSize)size{ UIImage *resultImage = image; UIGraphicsBeginImageContext(size); [resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)]; UIGraphicsEndImageContext(); return resultImage;}

20. 壓縮圖片到指定文件大小

//壓縮圖片到指定文件大小+ (NSData *)compressOriginalImage:(UIImage *)image toMaxDataSizeKBytes:(CGFloat)size{ NSData *data = UIImageJPEGRepresentation(image, 1.0); CGFloat dataKBytes = data.length/1000.0; CGFloat maxQuality = 0.9f; CGFloat lastData = dataKBytes; while (dataKBytes > size && maxQuality > 0.01f) {  maxQuality = maxQuality - 0.01f;  data = UIImageJPEGRepresentation(image, maxQuality);  dataKBytes = data.length/1000.0;  if (lastData == dataKBytes) {   break;  }else{   lastData = dataKBytes;  } } return data;}

21. 獲取設備 IP 地址

需要先引入下頭文件:

#import <ifaddrs.h>#import <arpa/inet.h>

代碼:

//獲取設備 IP 地址+ (NSString *)getIPAddress { NSString *address = @"error"; struct ifaddrs *interfaces = NULL; struct ifaddrs *temp_addr = NULL; int success = 0; success = getifaddrs(&interfaces); if (success == 0) {  temp_addr = interfaces;  while(temp_addr != NULL) {   if(temp_addr->ifa_addr->sa_family == AF_INET) {    if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {     address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];    }   }   temp_addr = temp_addr->ifa_next;  } } freeifaddrs(interfaces); return address;}

22. 判斷字符串中是否含有空格

+ (BOOL)isHaveSpaceInString:(NSString *)string{ NSRange _range = [string rangeOfString:@" "]; if (_range.location != NSNotFound) {  return YES; }else {  return NO; }}

23. 判斷字符串中是否含有某個字符串

+ (BOOL)isHaveString:(NSString *)string1 InString:(NSString *)string2{ NSRange _range = [string2 rangeOfString:string1]; if (_range.location != NSNotFound) {  return YES; }else {  return NO; }}

24. 判斷字符串中是否含有中文

+ (BOOL)isHaveChineseInString:(NSString *)string{ for(NSInteger i = 0; i < [string length]; i++){  int a = [string characterAtIndex:i];  if (a > 0x4e00 && a < 0x9fff) {   return YES;  } } return NO;}

25. 判斷字符串是否全部為數字

+ (BOOL)isAllNum:(NSString *)string{ unichar c; for (int i=0; i<string.length; i++) {  c=[string characterAtIndex:i];  if (!isdigit(c)) {   return NO;  } } return YES;}

26. 繪制虛線

/* ** lineFrame:  虛線的 frame ** length:  虛線中短線的寬度 ** spacing:  虛線中短線之間的間距 ** color:   虛線中短線的顏色*/+ (UIView *)createDashedLineWithFrame:(CGRect)lineFrame       lineLength:(int)length       lineSpacing:(int)spacing       lineColor:(UIColor *)color{ UIView *dashedLine = [[UIView alloc] initWithFrame:lineFrame]; dashedLine.backgroundColor = [UIColor clearColor]; CAShapeLayer *shapeLayer = [CAShapeLayer layer]; [shapeLayer setBounds:dashedLine.bounds]; [shapeLayer setPosition:CGPointMake(CGRectGetWidth(dashedLine.frame) / 2, CGRectGetHeight(dashedLine.frame))]; [shapeLayer setFillColor:[UIColor clearColor].CGColor]; [shapeLayer setStrokeColor:color.CGColor]; [shapeLayer setLineWidth:CGRectGetHeight(dashedLine.frame)]; [shapeLayer setLineJoin:kCALineJoinRound]; [shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:length], [NSNumber numberWithInt:spacing], nil]]; CGMutablePathRef path = CGPathCreateMutable(); CGPathMoveToPoint(path, NULL, 0, 0); CGPathAddLineToPoint(path, NULL, CGRectGetWidth(dashedLine.frame), 0); [shapeLayer setPath:path]; CGPathRelease(path); [dashedLine.layer addSublayer:shapeLayer]; return dashedLine;}

27. 將字典對象轉換為 JSON 字符串

+ (NSString *)jsonPrettyStringEncoded:(NSDictionary *)dictionary{ if ([NSJSONSerialization isValidJSONObject:dictionary ]) {  NSError *error;  NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error];  if (!error) {   NSString *json = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];   return json;  } } return nil;}

28.將數組對象轉換為 JSON 字符串

+ (NSString *)jsonPrettyStringEncoded:(NSArray *)array{ if ([NSJSONSerialization isValidJSONObject:array]) {  NSError *error;  NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:&error];  if (!error) {   NSString *json = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];   return json;  } } return nil;}

29. 獲取 WiFi 信息

需要引入頭文件:

#import <SystemConfiguration/CaptiveNetwork.h>

代碼:

//獲取 WiFi 信息- (NSDictionary *)fetchSSIDInfo { NSArray *ifs = (__bridge_transfer NSArray *)CNCopySupportedInterfaces(); if (!ifs) {  return nil; } NSDictionary *info = nil; for (NSString *ifnam in ifs) {  info = (__bridge_transfer NSDictionary *)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);  if (info && [info count]) { break; } } return info;}

30. 獲取廣播地址、本機地址、子網掩碼、端口信息

需要引入頭文件:

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #ff4647}span.s1 {font-variant-ligatures: no-common-ligatures; color: #eb905a}span.s2 {font-variant-ligatures: no-common-ligatures}#import <ifaddrs.h>#import <arpa/inet.h>
//獲取廣播地址、本機地址、子網掩碼、端口信息- (NSMutableDictionary *)getLocalInfoForCurrentWiFi { NSMutableDictionary *dict = [NSMutableDictionary dictionary]; struct ifaddrs *interfaces = NULL; struct ifaddrs *temp_addr = NULL; int success = 0; // retrieve the current interfaces - returns 0 on success success = getifaddrs(&interfaces); if (success == 0) {  // Loop through linked list of interfaces  temp_addr = interfaces;  //*/  while(temp_addr != NULL) {   if(temp_addr->ifa_addr->sa_family == AF_INET) {    // Check if interface is en0 which is the wifi connection on the iPhone    if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {     //廣播地址     NSString *broadcast = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_dstaddr)->sin_addr)];     if (broadcast) {      [dict setObject:broadcast forKey:@"broadcast"];     }//     NSLog(@"broadcast address--%@",broadcast);     //本機地址     NSString *localIp = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];     if (localIp) {      [dict setObject:localIp forKey:@"localIp"];     }//     NSLog(@"local device ip--%@",localIp);     //子網掩碼地址     NSString *netmask = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_netmask)->sin_addr)];     if (netmask) {      [dict setObject:netmask forKey:@"netmask"];     }//     NSLog(@"netmask--%@",netmask);     //--en0 端口地址     NSString *interface = [NSString stringWithUTF8String:temp_addr->ifa_name];     if (interface) {      [dict setObject:interface forKey:@"interface"];     }//     NSLog(@"interface--%@",interface);     return dict;    }   }   temp_addr = temp_addr->ifa_next;  } } // Free memory freeifaddrs(interfaces); return dict;}

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美国产制服动漫| 97视频在线观看免费高清完整版在线观看| 国产精品久久久久秋霞鲁丝| 欧美黑人xxx| 国产成人精品日本亚洲| 成人精品久久久| 色与欲影视天天看综合网| 高清日韩电视剧大全免费播放在线观看| 亚洲午夜激情免费视频| 国产免费一区二区三区香蕉精| 最新国产成人av网站网址麻豆| 在线一区二区日韩| 精品成人av一区| 日韩精品在线免费观看视频| 久久免费国产视频| 亚洲第一区中文字幕| 日韩中文字幕国产| 国产成人精品免费视频| 久久精品国产清自在天天线| 欧美日韩中文字幕综合视频| 久久国产一区二区三区| 亚洲精品欧美极品| 欧美黑人xxxⅹ高潮交| 国产美女久久精品| 97精品一区二区视频在线观看| 久久伊人精品天天| 亚洲精品久久久久久久久久久| 亚洲第一精品电影| 亚洲性av在线| 久久久国产成人精品| 在线播放国产精品| 欧美性猛交xxxx免费看| 久色乳综合思思在线视频| 国模视频一区二区三区| 日韩av观看网址| 成人有码在线视频| 亚洲成人av在线| 国产一区二区三区在线播放免费观看| 日本高清不卡在线| 国产视频久久久| 欧美性猛交丰臀xxxxx网站| 狠狠色狠狠色综合日日小说| 精品久久久国产精品999| 精品亚洲一区二区三区在线观看| 九色精品免费永久在线| 国产精品久久久久999| 欧美肥臀大乳一区二区免费视频| 国产午夜精品全部视频在线播放| 91av视频在线观看| 亚洲免费高清视频| 国产亚洲精品久久久优势| 国产在线不卡精品| 国产精品久久99久久| 日韩精品www| 91久久国产精品91久久性色| 亚洲最新av在线| 68精品久久久久久欧美| 奇米成人av国产一区二区三区| 久久久999精品免费| 国产精品视频99| 亚洲va久久久噜噜噜久久天堂| 久久精品国产成人| 亚洲国产小视频| 国产婷婷成人久久av免费高清| 91久久久亚洲精品| 精品国产自在精品国产浪潮| 欧美一级成年大片在线观看| 国产精品福利网| 51精品国产黑色丝袜高跟鞋| 国产丝袜精品视频| 亚洲最大成人网色| 日韩电视剧在线观看免费网站| 亚洲成人黄色网| 欧美日韩中国免费专区在线看| 91精品在线观看视频| 国产亚洲美女精品久久久| 91黑丝在线观看| 欧美性xxxx18| 亚洲人成网7777777国产| 欧美亚洲成人免费| 欧美激情在线一区| 亚洲第一二三四五区| 97激碰免费视频| 91九色视频导航| 亚洲xxxxx| 国产精品视频一| 全亚洲最色的网站在线观看| 97精品久久久中文字幕免费| 97视频在线观看免费高清完整版在线观看| 最近2019年手机中文字幕| 国产精品日日摸夜夜添夜夜av| 正在播放欧美一区| 亚洲影视中文字幕| 亚洲国产精品999| 91久久久久久久久久久| 91精品视频在线| 美女黄色丝袜一区| 免费91在线视频| 国产91免费看片| 最近的2019中文字幕免费一页| 在线日韩中文字幕| 欧美午夜片在线免费观看| 亚洲区免费影片| 日本韩国在线不卡| 国产亚洲精品va在线观看| 日韩大片在线观看视频| 欧美激情欧美激情| 色多多国产成人永久免费网站| 欧美日韩在线视频首页| 欧美精品在线网站| 精品中文字幕乱| 国产日韩欧美在线看| 国产中文欧美精品| 精品国产电影一区| 亚洲电影免费在线观看| 国产成+人+综合+亚洲欧美丁香花| 中文字幕欧美精品日韩中文字幕| 亚洲一区二区三区xxx视频| 久久久精品久久久久| 中文字幕免费精品一区| 国产精品丝袜视频| 国产精品欧美日韩一区二区| 久久91精品国产91久久久| 精品久久久精品| 在线日韩日本国产亚洲| 海角国产乱辈乱精品视频| 日韩久久免费电影| 久久国产精彩视频| 日韩亚洲综合在线| 欧美亚洲视频在线观看| 中文字幕日韩免费视频| 日本精品性网站在线观看| 欧美成人黄色小视频| 成人444kkkk在线观看| 国产精品自产拍高潮在线观看| 777午夜精品福利在线观看| 日韩精品亚洲元码| 国产主播欧美精品| 久久久国产精彩视频美女艺术照福利| 亚洲天天在线日亚洲洲精| 欧美成人精品xxx| 91视频88av| 欧美最猛性xxxxx免费| 国产精品久久久久久亚洲影视| 欧美一区二区三区……| 国产视频在线观看一区二区| 精品国产依人香蕉在线精品| 日韩在线视频国产| 亚洲成人激情在线观看| 久久久精品电影| 欧美国产日韩免费| 日韩欧美成人网| 欧美精品成人91久久久久久久| 国产精品男女猛烈高潮激情| 国产欧美日韩精品专区| 91精品视频免费看| 性色av一区二区三区在线观看| 国模gogo一区二区大胆私拍| 亚洲第一页中文字幕| 久久久噜噜噜久久中文字免| 这里只有精品在线播放| 中文字幕久久久av一区| 热久久这里只有精品| 欧美色videos|