1.在Appdelegate里的didFinishLaunching方法中用NSUserDefault在本地寫入當(dāng)時(shí)獲取的日期负蠕,在ios9.2上會(huì)閃退,且僅在TestFlight測(cè)試版本或者App Store正式版本上閃退,直接運(yùn)行或者是ios9.2之外的版本窘疮,都沒有問題矫付,ios10.1以上沒有試過减细。
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.reibang.com/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勾選后可以解決此問題蔽午。
3.注意這些函數(shù)遵循Core Foundation的命名約定,只要函數(shù)名中包含?"Create" 或 "Copy"的函數(shù)返回的引用酬蹋,都必須調(diào)用CFRelease來釋放及老。
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類型轉(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)單的嘗試)
在這之前試過雙重嵌套僧鲁,發(fā)現(xiàn)沒有什么用,要么就是只要重復(fù)就不添加(用addObject做加進(jìn)去)象泵,要么就是用removeObject做減法數(shù)組寞秃,判斷嵌套的兩個(gè)數(shù)組每個(gè)元素第一次重復(fù)時(shí)不予刪除,這樣因?yàn)槭乔短着蓟荩宰龅阶詈缶褪莾蓚€(gè)數(shù)組相同元素重疊第一次的時(shí)候保留春寿,重疊多次的時(shí)候去掉,沒有任何意義忽孽,這個(gè)枚舉器之前看過绑改,已經(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];
? ? ? ? ? ? ? ? }
}
后臺(tái)寫了一個(gè)純json的接口,要求上傳的圖片轉(zhuǎn)成base64的字符串造壮,本來以為是要base64加密一下覆履,發(fā)給他就行,結(jié)果服務(wù)器解析不了圖片參數(shù)费薄。后來用了YYKit里面的NSData的類別硝全,可以識(shí)別了,但是我們開發(fā)的SDK不能用這個(gè)文件(待研究)楞抡,所以找了半天伟众,終于明白是關(guān)鍵字沒搜對(duì),不是圖片base64加密召廷,而是base64編碼凳厢,然后就找到正確答案了,這篇文章很實(shí)用(在線校驗(yàn)圖片base64編碼)
8.宏定義遇見的問題
```
#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í)間本冲,但是打印出來的前半段是當(dāng)?shù)貢r(shí)區(qū)的時(shí)間,因?yàn)闀r(shí)差在后面有個(gè)+8000劫扒,所以打印出來的其實(shí)也是0時(shí)區(qū)時(shí)間檬洞,不過是需要自己計(jì)算的,想要計(jì)算當(dāng)前時(shí)區(qū)的時(shí)間沟饥,①要么截取獲取到的前半段當(dāng)?shù)貢r(shí)間通過NSDateFormatter轉(zhuǎn)化為yyyy-MM-dd HH:mm:ss來直接顯示添怔,②要么獲取當(dāng)前時(shí)間到1970的秒數(shù)加上獲取時(shí)區(qū)的時(shí)差秒數(shù),最后得到時(shí)間贤旷。
10.[ios13.0-13.2presentView 彈出的view會(huì)像actionsheet一樣广料,頂部會(huì)有一部分露出根視圖](http://www.reibang.com/p/4f96d078f1f3)
想要彈出view完全覆蓋整屏,要修改UIViewController里面的一個(gè)屬性遮晚,即:modalPresentationStyle
UIModalPresentationStyle是一個(gè)枚舉NS_ENUM類型的性昭,我們所需要的全屏推入的方法就對(duì)應(yīng) 0 這個(gè)選項(xiàng)即UIModalPresentationFullScreen
所以如果需要還原之前的效果的話
```
presentVc.modalPresentationStyle=.fullScreen//swift
presentVc.modalPresentationStyle=0;//OC
```