iOS獲取手機的IP地址

1.添加這五個庫(在聯網的情況下)

#import <sys/socket.h>
#import <sys/sockio.h>
#import <sys/ioctl.h>
#import <net/if.h>
#import <arpa/inet.h>

2.寫一個方法

- (NSString *)getDeviceIPIpAddresses
{int sockfd =socket(AF_INET,SOCK_DGRAM, 0);
//    if (sockfd <</span> 0) return nil;NSMutableArray *ips = [NSMutableArrayarray];int BUFFERSIZE =4096;structifconf ifc;char buffer[BUFFERSIZE], *ptr, lastname[IFNAMSIZ], *cptr;structifreq *ifr, ifrcopy;ifc.ifc_len = BUFFERSIZE;ifc.ifc_buf = buffer;if (ioctl(sockfd,SIOCGIFCONF, &ifc) >= 0){for (ptr = buffer; ptr < buffer + ifc.ifc_len; ){ifr = (structifreq *)ptr;int len =sizeof(structsockaddr);if (ifr->ifr_addr.sa_len > len) {len = ifr->ifr_addr.sa_len;}ptr += sizeof(ifr->ifr_name) + len;if (ifr->ifr_addr.sa_family !=AF_INET) continue;if ((cptr = (char *)strchr(ifr->ifr_name,':')) != NULL) *cptr =0;if (strncmp(lastname, ifr->ifr_name,IFNAMSIZ) == 0)continue;memcpy(lastname, ifr->ifr_name,IFNAMSIZ);ifrcopy = *ifr;ioctl(sockfd,SIOCGIFFLAGS, &ifrcopy);if ((ifrcopy.ifr_flags &IFF_UP) == 0)continue;NSString *ip = [NSString stringWithFormat:@"%s",inet_ntoa(((structsockaddr_in *)&ifr->ifr_addr)->sin_addr)];[ips addObject:ip];}}close(sockfd);NSString *deviceIP =@"";for (int i=0; i < ips.count; i++){if (ips.count >0){deviceIP = [NSStringstringWithFormat:@"%@",ips.lastObject];}}NSLog(@"deviceIP========%@",deviceIP);return deviceIP;
}

stackoverflow上找到一種方法,能實時獲取IP

#include <ifaddrs.h>
#include <arpa/inet.h>
#include <net/if.h>#define IOS_CELLULAR    @"pdp_ip0"
#define IOS_WIFI        @"en0"
//#define IOS_VPN       @"utun0"
#define IP_ADDR_IPv4    @"ipv4"
#define IP_ADDR_IPv6    @"ipv6"- (NSString *)getIPAddress:(BOOL)preferIPv4
{NSArray *searchArray = preferIPv4 ?@[ /*IOS_VPN @"/" IP_ADDR_IPv4, IOS_VPN @"/" IP_ADDR_IPv6,*/ IOS_WIFI @"/" IP_ADDR_IPv4, IOS_WIFI @"/" IP_ADDR_IPv6, IOS_CELLULAR @"/" IP_ADDR_IPv4, IOS_CELLULAR @"/" IP_ADDR_IPv6 ] :@[ /*IOS_VPN @"/" IP_ADDR_IPv6, IOS_VPN @"/" IP_ADDR_IPv4,*/ IOS_WIFI @"/" IP_ADDR_IPv6, IOS_WIFI @"/" IP_ADDR_IPv4, IOS_CELLULAR @"/" IP_ADDR_IPv6, IOS_CELLULAR @"/" IP_ADDR_IPv4 ] ;NSDictionary *addresses = [self getIPAddresses];NSLog(@"addresses: %@", addresses);__block NSString *address;[searchArray enumerateObjectsUsingBlock:^(NSString *key, NSUInteger idx, BOOL *stop){address = addresses[key];if(address) *stop = YES;} ];return address ? address : @"0.0.0.0";
}- (NSDictionary *)getIPAddresses
{NSMutableDictionary *addresses = [NSMutableDictionary dictionaryWithCapacity:8];// retrieve the current interfaces - returns 0 on successstruct ifaddrs *interfaces;if(!getifaddrs(&interfaces)) {// Loop through linked list of interfacesstruct ifaddrs *interface;for(interface=interfaces; interface; interface=interface->ifa_next) {if(!(interface->ifa_flags & IFF_UP) /* || (interface->ifa_flags & IFF_LOOPBACK) */ ) {continue; // deeply nested code harder to read}const struct sockaddr_in *addr = (const struct sockaddr_in*)interface->ifa_addr;char addrBuf[ MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN) ];if(addr && (addr->sin_family==AF_INET || addr->sin_family==AF_INET6)) {NSString *name = [NSString stringWithUTF8String:interface->ifa_name];NSString *type;if(addr->sin_family == AF_INET) {if(inet_ntop(AF_INET, &addr->sin_addr, addrBuf, INET_ADDRSTRLEN)) {type = IP_ADDR_IPv4;}} else {const struct sockaddr_in6 *addr6 = (const struct sockaddr_in6*)interface->ifa_addr;if(inet_ntop(AF_INET6, &addr6->sin6_addr, addrBuf, INET6_ADDRSTRLEN)) {type = IP_ADDR_IPv6;}}if(type) {NSString *key = [NSString stringWithFormat:@"%@/%@", name, type];addresses[key] = [NSString stringWithUTF8String:addrBuf];}}}// Free memoryfreeifaddrs(interfaces);}return [addresses count] ? addresses : nil;
}

第三種方法

//獲取公網IP非局域網IP
<span class="hljs-built_in" style="color: rgb(38, 139, 210); font-size: 12px;">直接訪問此網址 NSString</span><span style="font-size: 12px; background-color: transparent;"> *url = </span><span class="hljs-string" style="color: rgb(42, 161, 152); font-size: 12px;">@"http://ip.taobao.com/service/getIpInfo.php?ip=myip"</span><span style="font-size: 12px; background-color: transparent;">;</span>
<span style="color: rgb(85, 85, 85); font-family: Menlo, Monaco, Consolas, "Helvetica Neue", Helvetica, "Courier New", 微軟雅黑, monospace, Arial, sans-serif, 黑體; font-size: 14px; background-color: transparent;">網址返回的JSON數據段</span><pre class="hljs objectivec" name="code" style="white-space: pre-wrap; word-wrap: normal; padding: 9.5px; background: rgb(253, 246, 227); margin-top: 0px; margin-bottom: 20px; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; line-height: 20px; word-break: break-all; overflow: auto;"><code class="objectivec" style="padding: 0px; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 12px; border: none; background-color: transparent;"><span style="color: rgb(85, 85, 85); font-family: Menlo, Monaco, Consolas, "Helvetica Neue", Helvetica, "Courier New", 微軟雅黑, monospace, Arial, sans-serif, 黑體; font-size: 14px;">????{</span><span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold; font-family: Menlo, Monaco, Consolas, "Helvetica Neue", Helvetica, "Courier New", 微軟雅黑, monospace, Arial, sans-serif, 黑體; font-size: 14px;">"code"</span><span style="color: rgb(85, 85, 85); font-family: Menlo, Monaco, Consolas, "Helvetica Neue", Helvetica, "Courier New", 微軟雅黑, monospace, Arial, sans-serif, 黑體; font-size: 14px;">:</span><span class="json_number" style="color: rgb(37, 170, 226); font-weight: bold; font-family: Menlo, Monaco, Consolas, "Helvetica Neue", Helvetica, "Courier New", 微軟雅黑, monospace, Arial, sans-serif, 黑體; font-size: 14px;">0</span><span style="color: rgb(85, 85, 85); font-family: Menlo, Monaco, Consolas, "Helvetica Neue", Helvetica, "Courier New", 微軟雅黑, monospace, Arial, sans-serif, 黑體; font-size: 14px;">,</span><br style="color: rgb(85, 85, 85); font-family: Menlo, Monaco, Consolas, "Helvetica Neue", Helvetica, "Courier New", 微軟雅黑, monospace, Arial, sans-serif, 黑體; font-size: 14px;" /><span style="color: rgb(85, 85, 85); font-family: Menlo, Monaco, Consolas, "Helvetica Neue", Helvetica, "Courier New", 微軟雅黑, monospace, Arial, sans-serif, 黑體; font-size: 14px;">????</span><span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold; font-family: Menlo, Monaco, Consolas, "Helvetica Neue", Helvetica, "Courier New", 微軟雅黑, monospace, Arial, sans-serif, 黑體; font-size: 14px;">"data"</span><span style="color: rgb(85, 85, 85); font-family: Menlo, Monaco, Consolas, "Helvetica Neue", Helvetica, "Courier New", 微軟雅黑, monospace, Arial, sans-serif, 黑體; font-size: 14px;">:</span><span style="color: rgb(85, 85, 85); font-family: Menlo, Monaco, Consolas, "Helvetica Neue", Helvetica, "Courier New", 微軟雅黑, monospace, Arial, sans-serif, 黑體; font-size: 14px;"><span class="fa fa-minus-square-o"></span>{<span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold;">"country"</span>:<span class="json_string" style="color: rgb(58, 181, 74); font-weight: bold;">"中國"</span>,<span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold;">"country_id"</span>:<span class="json_string" style="color: rgb(58, 181, 74); font-weight: bold;">"CN"</span>,<span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold;">"area"</span>:<span class="json_string" style="color: rgb(58, 181, 74); font-weight: bold;">"華東"</span>,<span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold;">"area_id"</span>:<span class="json_string" style="color: rgb(58, 181, 74); font-weight: bold;">"300000"</span>,<span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold;">"region"</span>:<span class="json_string" style="color: rgb(58, 181, 74); font-weight: bold;">"上海市"</span>,<span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold;">"region_id"</span>:<span class="json_string" style="color: rgb(58, 181, 74); font-weight: bold;">"310000"</span>,<span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold;">"city"</span>:<span class="json_string" style="color: rgb(58, 181, 74); font-weight: bold;">"上海市"</span>,<span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold;">"city_id"</span>:<span class="json_string" style="color: rgb(58, 181, 74); font-weight: bold;">"310100"</span>,<span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold;">"county"</span>:<span class="json_string" style="color: rgb(58, 181, 74); font-weight: bold;">"浦東"</span>,<span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold;">"county_id"</span>:<span class="json_string" style="color: rgb(58, 181, 74); font-weight: bold;">"334115"</span>,<span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold;">"isp"</span>:<span class="json_string" style="color: rgb(58, 181, 74); font-weight: bold;">"電信"</span>,<span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold;">"isp_id"</span>:<span class="json_string" style="color: rgb(58, 181, 74); font-weight: bold;">"100227"</span>,<span class="json_key" style="color: rgb(146, 39, 143); font-weight: bold;">"ip"</span>:<span class="json_string" style="color: rgb(58, 181, 74); font-weight: bold;">"126.231.115.34"</span>}</span><br style="color: rgb(85, 85, 85); font-family: Menlo, Monaco, Consolas, "Helvetica Neue", Helvetica, "Courier New", 微軟雅黑, monospace, Arial, sans-serif, 黑體; font-size: 14px;" /><span style="color: rgb(85, 85, 85); font-family: Menlo, Monaco, Consolas, "Helvetica Neue", Helvetica, "Courier New", 微軟雅黑, monospace, Arial, sans-serif, 黑體; font-size: 14px;">}</span></code>
<pre class="hljs objectivec" name="code" style="white-space: pre-wrap; word-wrap: normal; padding: 9.5px; background: rgb(253, 246, 227); margin-top: 0px; margin-bottom: 20px; line-height: 20px; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; word-break: break-all; overflow: auto;"><p class="p1" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s1">- (</span><span class="s2">void</span><span class="s1">)urlRequestOperation{</span></p><p class="p2" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s3">? ? </span><span class="s1">dispatch_async</span><span class="s3">(</span><span class="s1">dispatch_get_global_queue</span><span class="s3">(</span><span class="s4">DISPATCH_QUEUE_PRIORITY_BACKGROUND</span><span class="s3">, </span><span class="s5">0</span><span class="s3">), ^{</span></p><p class="p3" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s3">? ? ? ? </span><span class="s6">NSString</span><span class="s3"> *URLTmp1 = </span><span class="s1">@"http://1212.ip138.com/ic.asp"</span><span class="s3">;</span></p><p class="p2" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s3">? ? ? ? </span><span class="s6">NSString</span><span class="s3"> *URLTmp = [URLTmp1 </span><span class="s1">stringByAddingPercentEscapesUsingEncoding</span><span class="s3">:</span><span class="s1">NSUTF8StringEncoding</span><span class="s3">];</span></p><p class="p1" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s1">? ? ? ? </span><span class="s6">NSData</span><span class="s1"> * resData = [</span><span class="s6">NSData</span><span class="s1"> </span><span class="s7">dataWithContentsOfURL</span><span class="s1">:[</span><span class="s6">NSURL</span><span class="s1"> </span><span class="s7">URLWithString</span><span class="s1">:URLTmp]];</span></p><p class="p2" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s3">? ? ? ? </span><span class="s1">dispatch_async</span><span class="s3">(</span><span class="s1">dispatch_get_main_queue</span><span class="s3">(), ^{</span></p><p class="p1" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s1">? ? ? ? ? ? </span><span class="s2">if</span><span class="s1"> (resData) {</span></p><p class="p1" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s1">? ? ? ? ? ? ? ? </span><span class="s8">//</span><span class="s9">系統自帶</span><span class="s8">JSON</span><span class="s9">解析</span></p><p class="p2" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s3">? ? ? ? ? ? ? ? </span><span class="s10">NSStringEncoding</span><span class="s3"> gbkEncoding = </span><span class="s1">CFStringConvertEncodingToNSStringEncoding</span><span class="s3">(</span><span class="s1">kCFStringEncodingGB_18030_2000</span><span class="s3">);</span></p><p class="p2" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s3">		//<span style="font-family: STHeiti; font-size: 14px;">您的IP是:[122.222.122.22] 來自:上海市某某區 某某運營商</span>
</span></p><p class="p1" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s1">? ? ? ? ? ? ? ? </span><span class="s6">NSString</span><span class="s1"> *str3 = [[</span><span class="s6">NSString</span><span class="s1"> </span><span class="s7">alloc</span><span class="s1">] </span><span class="s7">initWithData</span><span class="s1">:resData </span><span class="s7">encoding</span><span class="s1">:gbkEncoding];</span></p><p class="p1" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s1">?? 		}</span></p><p class="p1" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s1">? ? ? ? });</span></p><p class="p1" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s1">? ? });</span></p><p class="p1" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;"><span class="s1">}</span></p>

 
 
<pre class="hljs objectivec" name="code" style="white-space: pre-wrap; word-wrap: normal; padding: 9.5px; background: rgb(253, 246, 227); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; margin-top: 0px; margin-bottom: 20px; line-height: 20px; word-break: break-all; overflow: auto;"><code class="objectivec" style="padding: 0px; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 12px; background-color: transparent; border: none;"><span class="hljs-comment" style="color: rgb(147, 161, 161);">//獲取局域網IP地址</span>
- (<span class="hljs-built_in" style="color: rgb(38, 139, 210);">NSString</span> *)getIpAddresses{<span class="hljs-built_in" style="color: rgb(38, 139, 210);">NSString</span> *address = <span class="hljs-string" style="color: rgb(42, 161, 152);">@"error"</span>;<span class="hljs-keyword" style="color: rgb(133, 153, 0);">struct</span> ifaddrs *interfaces = <span class="hljs-literal" style="color: rgb(0, 102, 102);">NULL</span>;<span class="hljs-keyword" style="color: rgb(133, 153, 0);">struct</span> ifaddrs *temp_addr = <span class="hljs-literal" style="color: rgb(0, 102, 102);">NULL</span>;<span class="hljs-keyword" style="color: rgb(133, 153, 0);">int</span> success = <span class="hljs-number" style="color: rgb(42, 161, 152);">0</span>;<span class="hljs-comment" style="color: rgb(147, 161, 161);">// retrieve the current interfaces - returns 0 on success</span>success = getifaddrs(&interfaces);<span class="hljs-keyword" style="color: rgb(133, 153, 0);">if</span> (success == <span class="hljs-number" style="color: rgb(42, 161, 152);">0</span>){<span class="hljs-comment" style="color: rgb(147, 161, 161);">// Loop through linked list of interfaces</span>temp_addr = interfaces;<span class="hljs-keyword" style="color: rgb(133, 153, 0);">while</span>(temp_addr != <span class="hljs-literal" style="color: rgb(0, 102, 102);">NULL</span>){<span class="hljs-keyword" style="color: rgb(133, 153, 0);">if</span>(temp_addr->ifa_addr->sa_family == AF_INET){<span class="hljs-comment" style="color: rgb(147, 161, 161);">// Check if interface is en0 which is the wifi connection on the iPhone</span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">if</span>([[<span class="hljs-built_in" style="color: rgb(38, 139, 210);">NSString</span> stringWithUTF8String:temp_addr->ifa_name] isEqualToString:<span class="hljs-string" style="color: rgb(42, 161, 152);">@"en0"</span>]){<span class="hljs-comment" style="color: rgb(147, 161, 161);">// Get NSString from C String</span>address = [<span class="hljs-built_in" style="color: rgb(38, 139, 210);">NSString</span> stringWithUTF8String:inet_ntoa(((<span class="hljs-keyword" style="color: rgb(133, 153, 0);">struct</span> sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];}}temp_addr = temp_addr->ifa_next;}}<span class="hljs-comment" style="color: rgb(147, 161, 161);">// Free memory</span>freeifaddrs(interfaces);<span class="hljs-keyword" style="color: rgb(133, 153, 0);">return</span> address;
}</code>
 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247963.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247963.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247963.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue — 第六天(vue-cli-介紹)

vue-cli-介紹 vue-cli是官方提供的開發vue項目的腳手架工具。 腳手架是為了保證各施工過程順利進行而搭設的工作平臺。 在開發過程中&#xff0c;腳手架工具是有用的&#xff0c;開發完成&#xff08;項目上線&#xff09;&#xff0c;它就沒有用了。 vue-cli可以提供基于vue項…

python安裝pyautogui遇到的gbk異常解決

一開始使用pip install pyautogui,報錯,大概信息如下: Collecting pygetwindow (from pyautogui) Using cached https://files.pythonhosted.org/packages/01/ed/56d4a369c6e18f6b239d9ef37b3222ba308bfebf949571b2611ff7d64f1d/PyGetWindow-0.0.4.tar.gz ERROR: Complete …

NSString的各種用法總結(創建、截取、判斷比較、轉化數據類型、拼接、替換、添加、追加、讀取、寫入、刪去、改變)

1、創建字符串1&#xff09;NSSring *str ”adf”;2&#xff09;NSString *str1 [NSString new];NSString *str2 [[NSString alloc] initWithString:”adf”]; &#xff08;等同于1&#xff09;4&#xff09;NSString *str3 [NSString stringWithFormat:”name is %”,”小…

Vue — 第七天(vue-cli-案例)

資料獲取地址&#xff1a; github: https://gitee.com/wang_yu5201314/VUE_vuecli SSH&#xff1a; gitgitee.com:wang_yu5201314/VUE_vuecli.git hero案例-項目介紹 功能介紹&#xff1a; 三個模塊 英雄列表(只做這個)裝備列表技能列表 英雄列表 列表組件刪除功能添加組件編…

postman測試工具

做文件上傳測試的時候可以選擇輸入方式為文件 做文件下載測試的時候&#xff0c;可以選擇 轉載于:https://www.cnblogs.com/thesun/p/10853226.html

webpack — 概述介紹

webpack概述 webpack是一個流行的前端項目構建工具&#xff08;打包工具&#xff09;&#xff0c;可以解決當前web 開發中所面臨的困境。 webpack提供了友好的模塊化支持&#xff0c;以及代碼壓縮混淆、處理js兼容問題、性能優化等強大的功能&#xff0c;從而讓程序員把工作的…

徹底解決iOS項目中 _OBJC_CLASS_$_XXXService, referenced from: 的類似問題

這是大家熟悉的開發過程中可能遇到的問題 這是提交源碼到appStore不支持64位設備的提示 本人在提交項目到appStore時發生的的錯誤&#xff0c;提示必須要支持64的設備&#xff0c;然后自己趕緊進行相關的適應&#xff0c;出現了類似標題的問題&#xff0c;解決方法如下: 1、…

THUPCCTSAPIO2019:Far Away

流水賬~ THUPC nmdwsmduliu&#xff01; THUPC Day -INF~Day -2 大概就是自己做題和每周兩次的考試&#xff0c;lsy和fcw兩個外校的來吊打我們qwqqq THUPC Day -1 Z208 長沙->北京 在車上看gzy/tjj/xzz打擺&#xff1f; THUPC Day 0 從火車站出來做地鐵的時候和tjj做反了可海…

UIDocumentInteractionController之程序間文檔共享

iOS中的沙盒可以讓平臺更加的安全&#xff0c;這也是沙盒給用戶帶來的最主要好處。不過由于沙盒的嚴格限制&#xff0c;導致程序之間共享數據比較麻煩。一般在程序間共享文檔可以通過UIDocumentInteractionController類實現通訊。它支持在你的app中用其他app預覽和顯示文檔。同…

webpack — 概述 (2)

webpack學前必備 webpack中文網 webpack官網 1. Webpack 介紹 Webpack 是什么?? (面試) 前端模塊化打包工具WebPack可以看做是模塊打包機&#xff1a;它做的事情是&#xff0c;分析你的項目結構&#xff0c;找到JavaScript模塊、其它的一些瀏覽器不能直接運行的拓展語言…

VUE安裝依賴命令總結

以下是個人用到過的vue安裝包以及依賴命令&#xff08;在接觸項目時&#xff0c;有未寫到的會隨時補充&#xff09; 1. vuex 作用&#xff1a;vue狀態管理 安裝&#xff1a;npm install vuex --save 開源地址&#xff1a;github 文檔&#xff1a;https://vuex.vuejs.org/zh/ 2.…

SQL總結(快速參考)

SQL 語句 語句 語法 AND / OR SELECT column_name(s) FROM table_name WHERE condition AND|OR condition ALTER TABLE (add column) ALTER TABLE table_name ADD column_name datatype ALTER TABLE (drop column) ALTER TABLE table_name DROP COLUMN column_name AS (alias…

Vue -項目創建(rem適配項的設置)

3. 項目rem 配置 ####3.1 rem介紹 小米、京東、攜程 m.mi.com/m.jd.com/m.ctrp.com 核心原理 1rem 當前 html 的fontSize也就是說 : rem是相當于根元素的字體大小// 使用div {width:2rem;height:2rem}// 媒體查詢media (min-width:320px) {html {font-size : 20px}}media (mi…

c#基礎知識梳理(四)

上期回顧 - https://www.cnblogs.com/liu-jinxin/p/10826971.html 一、類 當你定義一個類時&#xff0c;你定義了一個數據類型的藍圖。這實際上并沒有定義任何的數據&#xff0c;但它定義了類的名稱意味著什么&#xff0c;也就是說&#xff0c;類的對象由什么組成及在這個對象…

UIButton設置圓角和邊框及邊框顏色

UIButton *testButton [UIButton buttonWithType:UIButtonTypeSystem];[testButton setFrame:CGRectMake(self.view.frame.size.width/2, self.view.frame.size.height/2, 100,100)];[testButton setTitle:"獲取屏幕尺寸" forState:UIControlStateNormal];[testButt…

Git 的介紹簡介

使用 git 管理我們的項目并上傳到碼云 ##1. 本地管理 本地工作區 git add >暫存區 git commit > 倉庫區 git status : 查看我們的狀態 查看到很多紅色的 (有修改的 有刪除的 有添加的) git add . : 把當前所有文件添加到暫存區 git commit -m xxx 把代碼從暫存區 提交…

【王俊杰de人工智能實戰課】第7次作業2

Brief Guide 項目內容這個作業屬于哪個課程北航人工智能實戰課這個作業的要求在哪里第三次作業要求我在這個課程的目標是獲得機器學習相關的完整項目與學習經驗&#xff1b;通過與人工智能行業的大牛們聊天了解行業不同方向的發展以便進行職業規劃&#xff1b;為轉CS積累基礎知…

讓UITableView的section header view不懸停的方法

當 UITableView 的 style 屬性設置為 Plain 時&#xff0c;這個tableview的section header在滾動時會默認懸停在界面頂端。取消這一特性的方法有兩種&#xff1a; 將 style 設置為 Grouped 。這時所有的section header都會隨著scrollview滾動了。不過 grouped 和 plain 的樣式…

Promise 的基本使用 與 Ajax的jQuery封裝

Promise 的基本使用 為了解決回調地獄問題&#xff0c;從而給出的解決辦法&#xff1a; /*** Promise** 1. Promise 是 一個構造函數 new Vue()* 2. Promise() 里面有個參數, 參數就是一個回調 () > {}* 回調也有參數* resolve f 操作成功的時候調用resolve > …

個人沖刺9

1.昨天做了界面整體優化。 2.今天打算了解一下組成員的情況。 3.整體界面優化沒有什么問題。轉載于:https://www.cnblogs.com/Evak/p/10936840.html