tips-3

作者: 沁晓Chr | 来源:发表于2015-12-22 19:10 被阅读36次

    [NSNull null]//单例,占位的,约等nil
    因为数组和字典不能为空,所以可以用它,表明一个空的数组活字典对象

    在线格式化 ocChina

    11:25

    还有Inf表示“无穷大”,pi表示常数π,NaN,是Not a Number的缩写。NaN 用于处理计算中出现的错误情况,表示“不明确的数值结果”

    沙河

    NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

    NSFileManager

    NSFileManager *manager = [NSFileManager defaultManager];

    //保存下载的文件到沙河
    NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

    //拼接文件全路径
    NSString *fullPath = [caches stringByAppendingPathComponent:response.suggestedFilename];
    self.fullPath = fullPath;
    //创建文件
    [manager createFileAtPath:fullPath contents:nil attributes:nil];

    网络上传,分隔符可以自定义,但要求从始至终是同一个,一样

    开子线程,发网络请求失败.

    因为子线程默认没有runloop,connection为局部变量,加入了一个不存在的runloop,会被释放.(解决用一下runloop懒加载,[NSRunLoop currertRunLoop])主线程可以,因为有runloop存在强引用connection..
    用start的分开发请求的可以在子线程.因为它会判断runloop存在与否,不在就创建.

    resume回复
    suspend暂停
    cancel取消

    GET请求方式

    URL ;协议+域名(IP)+端口+?+参数

    内存泄露?

    -(void)dealloc
    {
    //注意:在不用的时候一定要调用该方法来释放,不然会出现内存泄露问题
    /**
    * Cancels all outstanding tasks and then invalidates the session object.
    Once invalidated, references to the delegate and callback objects are broken. Session objects cannot be reused.
    To allow outstanding tasks to run until completion, call finishTasksAndInvalidate instead.
    */
    //dealloc里调用,难道??程序退出了self.session还有强引用,所以要这么干
    [self.session invalidateAndCancel];
    // [self.session resetWithCompletionHandler:nil];

    //    [NSURLConnection connectionWithRequest:nil delegate:nil]
    

    }

    使用方法传参数是遇到

    *传入(传对象指针)//需要传入一个内容对象
    **/(void *)接收(传对象指针地址,改指向)//需要传入一个容器,可以接收内容对象对象

    回调的代码块,外部为定义方法中,接收参数,代码块

    //传出代码块的实例对象让别人用//传出的是代码块的实例对象,顺向作为对象参数(和其他通过代理或其他方式传出的对象一样)传出

    外部定义一个方法.内部在使用时,传入代码块实例对象作为参数.

    void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler//在内部声明类型 (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable)),然后定义实例completionHandler,然后实例completionHandler作为参数传出,然后在外部使用completionHandler
    -(void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler
    {
    //使用
    completionHandler(参数1,参数2);
    }

    一般的代码块,外部在使用方法中,传入参数,代码块

    //传出的是声明的类型,逆袭,
    //需要使用一个代码块,传出声明,让别人实例化,并通过作为方法参数传入实例对象,所以一般需要传出方法让别人使用.

    定义一个方法,让外部使用,但使用这个方法需要传入一个代码块实例对象参数.

    //在内部声明类型,外部实例化对象,内部使用

    NSStringFromSelector();
    NSSelectorFromString()

    FOUNDATION_EXPORT就是extern的意思

    typedef A B//给A类型起别名B类型

    define A B //定义A等价于B

    要传出去,用实参,外面用形参接受
    要接受,用形参,外面用实参传入
    形参 定义方法(形式参数)
    实参 使用方法(实际参数)

    形参和容器的思想是一样的

    [[UIDevice currentDevice].systemVersion floatValue] >= 8.0

    /**

    • 当前定位授权状态发生改变时调用

    • @param manager 位置管理者

    • @param status 状态
      */
      -(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
      {
      switch (status) {
      case kCLAuthorizationStatusNotDetermined:
      {
      NSLog(@"用户未决定");
      break;
      }
      case kCLAuthorizationStatusDenied:
      {

           // 判断当前设备是否支持定位, 定位服务是否开启
           if([CLLocationManager locationServicesEnabled])
           {
               NSLog(@"真正被拒绝");
               
               // 提醒给APP 授权
               // iOS8.0- , 截图
               // iOS8.0+ , 通过调用一个方法, 来直接到达设置界面
               // 跳转核心代码
               NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
               if ([[UIApplication sharedApplication] canOpenURL:url]) {
                   [[UIApplication sharedApplication] openURL: url];
               }
               
           }
           else
           {
               NSLog(@"定位服务被关闭");
               
           }
           break;
       }
           // 系统预留字段
       case kCLAuthorizationStatusRestricted:
       {
           NSLog(@"受限制");
           break;
       }
       case kCLAuthorizationStatusAuthorizedAlways:
       {
           NSLog(@"前后台定位授权");
           break;
       }
       case kCLAuthorizationStatusAuthorizedWhenInUse:
       {
           NSLog(@"前台定位授权");
           break;
       }
           
       default:
           break;
      

      }
      }

    // iso7
    // info没有key,没有+requestWhenInUseAuthorization...
    // 开始就可用前台
    // 勾选后台模式 location后台可以用,无蓝条
    // ----------ios8.0+定位适配-----------
    // 在info有两个key,前台,和always
    // NSLocationAlwaysUsageDescription,iOS8.0+前后台定位描述
    // NSLocationWhenInUseUsageDescription,iOS8.0+前台定位授权描述
    // 配前台key和勾选后台模式 location后台可以用,但有蓝条
    // always没蓝条
    // ios9
    // 在info有两个key,前台=,和always 加一个属性设置
    // @property(assign, nonatomic) BOOL allowsBackgroundLocationUpdates __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_9_0) __WATCHOS_PROHIBITED;
    // _locationM.allowsBackgroundLocationUpdates = YES
    // 配前台key用前台
    // 配always没蓝条,可用前后台
    // 或者配前台和后台属性设置+勾选后台模式 location,可用前后台.但后台有蓝条

    使用方法,在返回值里,返回要求,说明是同步的,在后面的代码块里面返回方法使用结果,说明异步,或者传入容器也可能是异步

    宏定义传参的两种方式

    define(name) (name)/(…name...)

    define(name) ##name/name##

    // 1. 获取当前设备朝向("磁力计传感器")
    [self.locationM startUpdatingHeading];

    double -->NSString

    @((double)pl.location.coordinate.latitude).stringValue

    1. 获取info.plist 文件内容

    NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];

    // NSLog(@"%@", infoDic);

    // 2. 获取其他开发人员, 填写的key
    NSString *always = infoDic[@"NSLocationAlwaysUsageDescription"];

    NSString *whenInUse = infoDic[@"NSLocationWhenInUseUsageDescription"];

    // 2. 把点坐标, 转换成为, 经纬度坐标
    CLLocationCoordinate2D center = [self.mapView convertPoint:point toCoordinateFromView:self.mapView];

    地里编码和反地理编码都是 得到 placemark

    结构体的创建其实可以用强转,不一定非要make

    view.centerOffset = CGPointMake(10, 10);
    view.centerOffset=(CGPoint){10.0,10.0}
    option.location = (CLLocationCoordinate2D){23.132931, 113.375924};

    相关文章

      网友评论

          本文标题:tips-3

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