1.主线程执行代码
dispatch_async(dispatch_get_main_queue(), ^{
[application registerForRemoteNotifications];
});
2.获取网络状态
方法1:-(NSString*)getNetWorkStates{
UIApplication *app = [UIApplication sharedApplication];
NSArray*children;
// 不能用 [[self deviceVersion] isEqualToString:@"iPhone X"] 来判断,因为模拟器不会返回 iPhone X
if ([[app valueForKeyPath:@"_statusBar"] isKindOfClass:NSClassFromString(@"UIStatusBar_Modern")]) {//判断iPhone X
children = [[[[appvalueForKeyPath:@"_statusBar"] valueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews];
}else{
children = [[[appvalueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews];
}
//NSArray *children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews];
NSString *state = [[NSString alloc]init];
intnetType = 0;
//获取到网络返回码
for(id child in children) {
if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
//获取到状态栏
netType = [[child valueForKeyPath:@"dataNetworkType"] intValue];
switch(netType) {
case0:
state=@"网络信号差";
//state = @"无网络"; GPRS网络状态下也显示无网络
//无网模式
break;
case1:
state=@"网络信号差";
//state = @"2G"; E网络状态属于2G
break;
case2:
state =@"3G";
break;
case3:
state =@"4G";
break;
case5:
state =@"WIFI";
break;
default:
break;
}
}
}
//根据状态选择
return state;
}
方法2:-(BOOL)checkNetStatus
{
NetworkStatus networkStatus = [Reachability reachabilityForInternetConnection].currentReachabilityStatus;
if(networkStatus ==NotReachable)
{
NSLog(@"无网络连接");
[SVProgressHUD showErrorWithStatus:@"当前网络不可用,请检查您的网络设置"];
returnNO;
}
else
{
NSLog(@"有网络连接");
if([[self getNetWorkStates] isEqualToString:@"网络信号差"])
{
[SVProgressHUD showErrorWithStatus:@"当前网络信号不好,可能会影响您的用户体验"];
}
return YES;
}
}
3.iOS13之后苹果上架不支持uiwebview了,需要换成wkwebview
4.设置代码只能在模拟器上执行#if TARGET_IPHONE_SIMULATOR #endif
5.iOS13之后[textfield setValue:RGB(153, 153, 153) forKeyPath:@"_placeholderLabel.textColor"];这种代码不可以使用了。
6.iOS13之后,presentviewcontroller样式出现了改变,需要适配。
7.关于线程顺序调用,使用GCD信号量
signal = dispatch_semaphore_create(0);//创建一个为0信号量的信号
dispatch_semaphore_signal(signal);
dispatch_semaphore_wait(signal, DISPATCH_TIME_FOREVER);
注意不要在主线程等待
8.主线程更新UI
dispatch_async(dispatch_get_main_queue(), ^{});
网友评论