美文网首页
iOS 小tips

iOS 小tips

作者: 狂奔的程序员 | 来源:发表于2020-01-06 10:32 被阅读0次

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(), ^{});

相关文章

  • iOS 11 适配以及Xcode 9小Tips

    iOS 11 适配以及Xcode 9小Tips iOS 11 适配以及Xcode 9小Tips

  • iOS图片推送的一些开发小Tips

    iOS图片推送的一些开发小Tips iOS图片推送的一些开发小Tips

  • iOS资源

    iOS开发200个tips总结(一) iOS开发200个tips总结(二) iOS中NSFileManager文件...

  • iOS小Tips

    仅为我自己记录用的,一些乱七八糟的东西,有需要欢迎使用,觉得小白的大神请路过。。。 宏定义判断null字符 coc...

  • iOS 小tips

    1.主线程执行代码 dispatch_async(dispatch_get_main_queue(), ^{ ...

  • iOS Tips 小贴

    1.NSDate 取年月日等等最近项目中要取到当前时间的年月日等等数据,搜遍终得一个方法如下: 输出_dataAr...

  • iOS开发小Tips

    1.AFNetworking返回结果默认回到主线程中,所以在AFNetworking的返回结果block中无需手动...

  • 推送相关

    推送:https://www.jianshu.com/p/0ab721604877 iOS图片推送的一些开发小Tips

  • iOS 开发 Button文字对齐

    iOS开发button常用设置 tips:无用设置

  • Swift如何给TableView、CollectionView

    OneSwift - iOS Tips Based On Swift TableView和CollectionVi...

网友评论

      本文标题:iOS 小tips

      本文链接:https://www.haomeiwen.com/subject/pvbhactx.html