? MARK 開發(fā)小細(xì)節(jié):
1、pem 轉(zhuǎn) cer 證書:$ openssl x509 -in? 214588721660321.pem -out testcert.cer -outform der
2绵跷、url含中文:?NSString?*encodedURLString = (NSString*)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)post_url,(CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",NULL,kCFStringEncodingUTF8));
3.隱藏狀態(tài)欄 調(diào)用此方法:flag、圈膏、隱藏或展示
-(void)dosonme{
? if([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
? ? ? ? ? ? ? ? [self?prefersStatusBarHidden:flag];
? ? ? ? ? ? ? ?[self?performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
? ? ? ? ? ? }
}
-(BOOL)prefersStatusBarHidden:(int)flag
{
? ? returnflag;
}
4桑腮、正則切割字符串:
NSString *test = @"1qe#dsadsadas#htt#234#www.badidu.com 我的";
? ? NSString*regexStr =@"(#\\w+#)";//含#qwe#的字符串
? ? NSError*error;
? ? NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:regexStr
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? options:0
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? error:&error];
? ? NSArray*array = [regexmatchesInString:testoptions:0range:NSMakeRange(0, test.length)];
? ? NSMutableArray *replaceStrS = [[NSMutableArray alloc]initWithCapacity:array.count];
? ? for(NSTextCheckingResult? *str2in array)
? ? {
? ? ? ? NSString*str = [testsubstringWithRange:str2.range];
? ? ? ? [replaceStrSaddObject:str];
? ? ? ? LFLog(@"---->%@",str);
? ? }
5捌朴、ios調(diào)用私有方法:(例子)
/*三方庫(kù)私有方法*/
- (void)cl_progressSliderTouchBegan:(CLSlider*)slider{
? ? SEL selector = NSSelectorFromString(@"cl_progressSliderTouchBegan:");
?((void(*)(id,SEL,id))[self.playerViewmethodForSelector:selector])(self.playerView, selector,slider);
}
6重寫私有方法:(例子??)
?Method? ?oriM =class_getInstanceMethod(_playerView.class,@selector(私有方法));
? Method? ?newM =class_getInstanceMethod(self.class,@selector(需要變成的方法));
? method_exchangeImplementations(oriM, newM);
7獲取屬性
unsigned int outCount =0;
? ? ? ? Ivar* ivars =class_copyIvarList([_playerView class], &outCount);
? ? ? ? for(unsigned int i =0; i < outCount; i ++) {
? ? ? ? ? ? Ivar ivar = ivars[i];
? ? ? ? ? ? const char* name =ivar_getName(ivar);
? ? ? ? ? ? const char* type =ivar_getTypeEncoding(ivar);
? ? ? ? ? ? NSLog(@"類型為 %s 的 %s ",type, name);
? ? ? ? }
? ? ? ? free(ivars);
//獲取方法
? ? unsignedintmethCount =0;
? ? Method*meths =class_copyMethodList([UITextFieldclass], &methCount);
? ? for(inti =0; i < methCount; i++) {
? ? ? ? Methodmeth = meths[i];
? ? ? ? SELsel =method_getName(meth);
? ? ? ? constchar*name =sel_getName(sel);
? ? ? ? NSLog(@"%s", name);
8洽损、通知中心的坑(注意 app完全關(guān)閉后 和 后臺(tái)前臺(tái)獲取方式不一樣)
在APP完全被關(guān)閉后庞溜,收到通知后:
在后臺(tái)/前臺(tái),app未關(guān)閉時(shí):
9.數(shù)組去重一步搞定
NSArray *newArr = [oldArr valueForKeyPath:@“@distinctUnionOfObjects.self"];
10. 上線app? 用戶為ios 9.2.1 下載崩潰
mark:UI切圖很關(guān)鍵漫试,不規(guī)范圖將導(dǎo)致無法安裝/出現(xiàn)一安裝即崩潰現(xiàn)象,惡心心
解決方法:解壓ipa-》終端 -》cd? 到(App\ 2018-08-27\ 16-02-21/App/Payload )-》$?find . -name 'Assets.car'-》$ sudo xcrun --sdk iphoneos assetutil --info? ./App.app/Assets.car > Assets.json
打開Assets.json 搜索:"DisplayGamut" : "P3"? ? ,刪除或者重新修改圖片
11排序:
取模型中price最小的:
CGFloat minValue = [[_models? valueForKeyPath:@"@min.price"] floatValue];??
按price排序 YES NO 正序 倒敘
?NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"price" ascending:YES];? ? ? ? ? ? ?
NSArray * tempArr = [self.models sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
排序
?NSArray*sortArray = [self.dic.allKeyssortedArrayUsingComparator:^NSComparisonResult(id? _Nonnullobj1,id? _Nonnullobj2) {? ? ? ? ?
? return [obj1 compare:obj2 options:NSNumericSearch];? ?
? ? }];? ? ?
? self.dataArray= [NSMutableArrayarrayWithArray:sortArray];
12好用的URL? ?http://host?query
[url????query];? ?
[url????host];
獲取WiFi名稱:需開啟定位
? NSString *wifiSSID = @"";? ? CFArrayRef wifiInterfaces = CNCopySupportedInterfaces();? ? NSArray *interfaces = (__bridge NSArray*)wifiInterfaces;? ? for(NSString*interfaceName in interfaces) {? ? ? ? CFDictionaryRef dictRef = CNCopyCurrentNetworkInfo((__bridge CFStringRef)(interfaceName));? ? ? ? if(dictRef) {? ? ? ? ? ? NSDictionary *networkInfo = (__bridge NSDictionary*)dictRef;? ? ? ? ? ? wifiSSID = [networkInfo objectForKey:(__bridge NSString*)kCNNetworkInfoKeySSID];? ? ? ? ? ? CFRelease(dictRef);? ? ? ? }? ? }? ? if (interfaces != nil) {? ? ? ? CFRelease(wifiInterfaces);? ? }? ? return wifiSSID;
iCloud存儲(chǔ)庫(kù):iCloudDocumentSync