ios開(kāi)發(fā)遇見(jiàn)的問(wèn)題

1.在Appdelegate里的didFinishLaunching方法中用NSUserDefault在本地寫(xiě)入當(dāng)時(shí)獲取的日期,在ios9.2上會(huì)閃退,且僅在TestFlight測(cè)試版本或者App Store正式版本上閃退,直接運(yùn)行或者是ios9.2之外的版本,都沒(méi)有問(wèn)題,ios10.1以上沒(méi)有試過(guò)。

2.獲取當(dāng)前連接的WiFiName

swift版:

var wifiName:String?
??????? let interFaceNames = CNCopySupportedInterfaces() as? Array<CFString>
??????? for name in interFaceNames ?? [] {
??????????? let info = CNCopyCurrentNetworkInfo(name) as? NSDictionary
??????????? if info?["SSID"] != nil {
??????????????? wifiName = info?["SSID"] as? String
??????????????? break
??????????? }
??????? }

OC版:

NSString*ssid =nil;
??? NSArray *ifs = (__bridge_transfer id) CNCopySupportedInterfaces();
??? for(NSString*ifnam in ifs) {
??????? NSDictionary*info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
??????? if(info[@"SSID"]) {
??????????? ssid = info[@"SSID"];
??????? }
??? }

但是ios12上獲取不了,這里是原因和解決辦法,謝謝大佬!---->(http://www.itdecent.cn/p/4c6a09a10dc3?utm_campaign=hugo&

ImportantTo use this function in iOS 12 and later, enable the Access WiFi Information capability for your app in Xcode. When you enable this capability, Xcode automatically adds the Access WiFi Information entitlement to your entitlements file and App ID.將Xcode的Access WIFI勾選后可以解決此問(wèn)題。

3.注意這些函數(shù)遵循Core Foundation的命名約定,只要函數(shù)名中包含?"Create" 或 "Copy"的函數(shù)返回的引用,都必須調(diào)用CFRelease來(lái)釋放。

4.NSData與NSString之間轉(zhuǎn)換

NSData轉(zhuǎn)NSString時(shí)為空?? 是由于在轉(zhuǎn)換成二進(jìn)制或者其他進(jìn)制時(shí),可能包含00,編碼是UTF8,所獲得的新字符就會(huì)為nil。

解決方法:

可以先把二進(jìn)制轉(zhuǎn)成字符指針或者字節(jié),在截取字符串不必要的字符“<”和“>”,

//將傳入的NSData類(lèi)型轉(zhuǎn)換成NSString并返回

-(NSString *)convertToNSString:(NSData *)data

{

? ? const unsigned char *szBuffer = [data bytes];

? ? if(!szBuffer){

? ? ? ? return nil;

? ? }

? ? NSMutableString *strTemp = [NSMutableString stringWithCapacity:[data length]*2];

? ? NSUInteger dataLength = [data length];

? ? for (NSInteger i=0; i < dataLength; ++i) {

? ? ? ? [strTemp appendFormat:@"%02lx",(unsigned long)szBuffer[i]];

? ? }

? NSString* result = [NSString stringWithString:strTemp];

? return result;

}

5.ios數(shù)組中添加唯一對(duì)象(參考這篇文章做了最簡(jiǎn)單的嘗試)

在這之前試過(guò)雙重嵌套,發(fā)現(xiàn)沒(méi)有什么用,要么就是只要重復(fù)就不添加(用addObject做加進(jìn)去),要么就是用removeObject做減法數(shù)組,判斷嵌套的兩個(gè)數(shù)組每個(gè)元素第一次重復(fù)時(shí)不予刪除,這樣因?yàn)槭乔短?,所以做到最后就是兩個(gè)數(shù)組相同元素重疊第一次的時(shí)候保留,重疊多次的時(shí)候去掉,沒(méi)有任何意義,這個(gè)枚舉器之前看過(guò),已經(jīng)忘了,待看。。。

for (NEHotspotNetwork*network in cmd.networkList) {

? ? ? ? ? ? ? ? __block BOOL isExist = NO;

? ? ? ? ? ? ? ? [self.networkListArr enumerateObjectsUsingBlock:^(NEHotspotNetwork * _Nonnull network2, NSUInteger idx, BOOL * _Nonnull stop) {

? ? ? ? ? ? ? ? ? ? if ([network2.SSID isEqualToString:network.SSID]) {//數(shù)組中已經(jīng)存在該對(duì)象

? ? ? ? ? ? ? ? ? ? ? ? *stop = YES;

? ? ? ? ? ? ? ? ? ? ? ? isExist = YES;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }];

? ? ? ? ? ? ? ? if (!isExist) {//如果不存在就添加進(jìn)去

? ? ? ? ? ? ? ? ? ? [self.networkListArr addObject:network];

? ? ? ? ? ? ? ? }

}

6.ios 圖片base64編碼

后臺(tái)寫(xiě)了一個(gè)純json的接口,要求上傳的圖片轉(zhuǎn)成base64的字符串,本來(lái)以為是要base64加密一下,發(fā)給他就行,結(jié)果服務(wù)器解析不了圖片參數(shù)。后來(lái)用了YYKit里面的NSData的類(lèi)別,可以識(shí)別了,但是我們開(kāi)發(fā)的SDK不能用這個(gè)文件(待研究),所以找了半天,終于明白是關(guān)鍵字沒(méi)搜對(duì),不是圖片base64加密,而是base64編碼,然后就找到正確答案了,這篇文章很實(shí)用(在線校驗(yàn)圖片base64編碼)

7.打包framework的整個(gè)過(guò)程

8.宏定義遇見(jiàn)的問(wèn)題

```

#define getRectNavAndStatusHight? [[UIApplication sharedApplication] statusBarFrame].size.height+self.navigationController.navigationBar.frame.size.height

CGFloat tabHeight = ScreenHeight() - (getRectNavAndStatusHight);

```

宏定義中有運(yùn)算符,當(dāng)宏定義在被運(yùn)算時(shí),并不會(huì)把宏定義運(yùn)算完后作為常數(shù)運(yùn)算,而是直接把定義式加入運(yùn)算,所以宏定義有運(yùn)算符時(shí),必須把宏定義單獨(dú)加括號(hào),優(yōu)先運(yùn)算。

9.NSDate與0時(shí)區(qū)

[NSDate date];獲取的是0時(shí)區(qū)時(shí)間,但是打印出來(lái)的前半段是當(dāng)?shù)貢r(shí)區(qū)的時(shí)間,因?yàn)闀r(shí)差在后面有個(gè)+8000,所以打印出來(lái)的其實(shí)也是0時(shí)區(qū)時(shí)間,不過(guò)是需要自己計(jì)算的,想要計(jì)算當(dāng)前時(shí)區(qū)的時(shí)間,①要么截取獲取到的前半段當(dāng)?shù)貢r(shí)間通過(guò)NSDateFormatter轉(zhuǎn)化為yyyy-MM-dd HH:mm:ss來(lái)直接顯示,②要么獲取當(dāng)前時(shí)間到1970的秒數(shù)加上獲取時(shí)區(qū)的時(shí)差秒數(shù),最后得到時(shí)間。

10.[ios13.0-13.2presentView 彈出的view會(huì)像actionsheet一樣,頂部會(huì)有一部分露出根視圖](http://www.itdecent.cn/p/4f96d078f1f3)

想要彈出view完全覆蓋整屏,要修改UIViewController里面的一個(gè)屬性,即:modalPresentationStyle

UIModalPresentationStyle是一個(gè)枚舉NS_ENUM類(lèi)型的,我們所需要的全屏推入的方法就對(duì)應(yīng) 0 這個(gè)選項(xiàng)即UIModalPresentationFullScreen

所以如果需要還原之前的效果的話

```

presentVc.modalPresentationStyle=.fullScreen//swift

presentVc.modalPresentationStyle=0;//OC


```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,817評(píng)論 0 10
  • 一年一度的蘋(píng)果春季發(fā)布會(huì)已經(jīng)過(guò)去一段時(shí)間了,xcode的beta版本以及iOS12版本也發(fā)布很久了,為了體驗(yàn)下i...
    科技農(nóng)民工閱讀 1,716評(píng)論 2 3
  • iOS 開(kāi)發(fā)中難免會(huì)遇到很多與網(wǎng)絡(luò)方面的判斷,這里做個(gè)匯總,大多可能是與WiFi相關(guān)的。 1.Ping域名、Pin...
    taogege666閱讀 1,489評(píng)論 1 1
  • 侯召明 一處濕地,紅灘綠葦,蟹肥稻香,油井林立,鷗鳥(niǎo)飛翔。 我跟隨藝術(shù)館的作家采風(fēng)團(tuán),來(lái)到了濕地科學(xué)館。在紅海灘廊...
    春明子閱讀 620評(píng)論 0 0
  • 5月皮皮媽咪大V加油站為愛(ài)書(shū)香陪伴活動(dòng)總結(jié) 1.閱讀打卡,成功完成21天挑戰(zhàn)的有以下媽媽?zhuān)篗innie Sha, ...
    皮卡丘小書(shū)屋_皮皮媽咪閱讀 436評(píng)論 1 0

友情鏈接更多精彩內(nèi)容