ARC
 1,arc是什么? automatic referece counting   mrc mannual
iOS5 之后出来的技术
// 2,arc的原理是什么?
//   在程序编译的时候,系统帮我们在合适的地方加上retain,release等
// 3,不能在使用retain,release,autorelease,retaincount
 4,使用__strong,__weak,__unsafe_unretained这些修饰符来对变量进行描述
4.1,如果一个对象没有强引用的指针指向它,就会被立刻释放
// 用法:全局变量用__strong,并且全局的__strong指针会在当前类的对象被释放的时候被赋值为nil
//      局部变量用__strong,并且局部的指针 会在超出作用域之后被赋值为nil
// 属性描述  如果是对象类型  用strong,如果是基本数据类型 unsafe_unretaind 或者 assign
// 5,autorelease不能使用,如果需要使用,__autoreleasing(方法内部创建对象,把对象返回到外面使用)
// 6,连线 用__weak
// 7,解决block中的循环引用使用__weak
// 8,属性名字不能以new开头,如果需要以new开头,那么就自己指定get方法的方法名
// 9,arc下 使用自动释放池  @autoreleasepool{}
// arc下  retain 就是strong  assign就是unsafe_unretained
// 10, coreFoundation  和 foundation相互转化  交换对象所有权
// 11,arc下结构体中不能使用oc对象
// 12,arc和非arc混编的时候
//    arc下某些类使用mrc编译  -fno-objc-arc
//    mrc下某些类使用arc编译  -fobjc-arc
// 13,让某些类必须在arc下使用,如果不是arc的环境,就报错
/*
#if !__has_feature(objc_arc)
#error  必须使用arc编译
#endif
 */

// coreFoundation框架中提供很多常用的类型,但是语法是基于c的
    // arc 只会帮你管理Foundation框架中的对象,不会帮你管理core Foundation框架中的对象
   
    // CFBridgingRetain 把foundation框架中对象的所有权,交给corefoundation框架来处理
    NSString *str = @"str";
    CFStringRef cfstr = (CFStringRef)CFBridgingRetain(str);
    CFRelease(cfstr);
   
   
    // 创建了一个core Foundation框架中的对象
    CFStringRef cfstr2 = CFStringCreateWithCString(kCFAllocatorDefault, "str2", kCFStringEncodingUTF8);
    NSString *str2 = (__bridge_transfer  NSString *)cfstr2;
深浅COPY
// 浅拷贝:指针的拷贝
    // 深拷贝:对象的拷贝
    // 完全拷贝:对象,包括对象中的对象都是拷贝
    // (编码 解码的方式 实现了完全拷贝)

// 小结!!!!!!
 对非容器类的不可变对象做的测试
对非容器类的可变的对象做测试
    // 调用copy方法 得到的对象都是不可变的对象
    // 调用mutableCopy方法 得到的都是可变的对象
   
可变的对象 无论是调用copy,或者mutableCopy都是深拷贝
   
    // 结论:只有不可变对象调用copy方法是浅拷贝,其他所有的都是深拷贝

/*
    // 实现完全拷贝
    NSMutableArray *array1 = [[NSMutableArray alloc] initWithObjects:@"1",@"2", nil];
   
    // 把数组编码成data
    NSMutableData *data = [[NSMutableData alloc] init];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    [archiver encodeObject:array1];
    [archiver finishEncoding];
   
   
    // 把data解码成数组
    NSKeyedUnarchiver *unarhiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
    NSMutableArray *array4 = [unarhiver decodeObject];
    [unarhiver finishDecoding];
   
    NSLog(@"%p   %p  ",array1,array4);
    NSLog(@"%p    %p   ",[array1 objectAtIndex:0],[array4 objectAtIndex:0]);
     */

map
// 创建一个定位管理器(一定要写成全局的)
    _manager = [[CLLocationManager alloc] init];
    _manager.delegate = self;
   
    // 在iOS8 以前不需要请求授权
    // 也不需要在info.plist文件中配置信息
    // 在软件使用的过程中去获取位置信息
    // NSLocationWhenInUseUsageDescription
    // 不仅在使用的过程中 还可以在程序进入后台的时候也可以定位
    // NSLocationAlwaysUsageDescription
   
   
    // 判断系统的版本号,根据不同的版本执行不同的代码
#define SystemVersion  [[[UIDevice currentDevice] systemVersion] floatValue]
    if (SystemVersion >= 8.0)
    {
        // 请求权限的
        //[_manager requestAlwaysAuthorization];
    }
   
    if ([CLLocationManager locationServicesEnabled])
    {
        NSLog(@"可以使用定位功能");

一些iOS心得的更多相关文章

  1. 【转】Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得

    iOS模拟器简介 iOS功能简介 iOS模拟器,是在Mac下面开发程序时,开发iOS平台的程序时候,可以使用的辅助工具. 其功能是,帮你模拟iOS平台设备,在模拟器上运行对应的程序,以方便你没有实体设 ...

  2. iOS 开发者计划申请 2014 年最新心得[转]

    iOS 开发者计划申请 2014 年最新心得 http://myfairland.net/ios-developer-program/

  3. ios中关于delegate(委托)的使用心得

    ios中关于delegate(委托)的使用心得 分类: iOS开发2012-05-15 10:54 34793人阅读 评论(9) 收藏 举报 iosuiviewtimerinterfaceprinti ...

  4. iOS学习心得——UITableViewCell的复用

    UITableView是在iOS开发中最常用的控件之一.我的第一篇学习心得献给它了         UITableView是由一行一行的UITableViewCell构成的.         首先想这 ...

  5. iOS 开发 UI 搭建心得(一)—— 驾驭 StoryBoard

    本系列文章中,我们将一起认识.了解当下 iOS 开发中几种常见的 UI 构建方式,分析他们分别适合的使用场景,以便让我们在以后的开发中,能够在恰当的时间.场景下做出最佳的选择,提升开发效率,增强程序的 ...

  6. ios面试心得

    第一部分:面试题   注意,下面这些题只是我准备的题库.在实际面试的时候我会根据面试者的水平抽出相应的题目来出的. 技术 基础   为什么说Objective-C是一门动态的语言? 讲一下MVC和MV ...

  7. GCDAsyncSocket类库,IOS下TCP通讯使用心得

    关于在IOS下使用Socket进行通讯的技术文章也许诺很久了,今日又是一个还债的日子,网上虽然很多介绍过AsyncSocket或GCDAsyncSocket的文章,但其实就那么一两篇大部分都是转载,于 ...

  8. iOS:学习runtime的理解和心得 (转)

    Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西.最近在学习Runtime,有自己的一些心得,整理如下, 一为 查阅方便 二为 或许能给他人一些启发, 三为 希 ...

  9. 一位 iOS 大牛的 BAT面试心得与经验总结,送给正在迷茫 的你!

    前言: 目前形势,参加到 iOS 队伍的人是越来越多,可以说是已经达到了供过于求的地步了. 今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,之前实习的时候就想着写一篇面经,后来忙就给忘了, ...

随机推荐

  1. RCNN--对象检测的又一伟大跨越

    最近在实验室和师兄师姐在做有关RCNN的研究,发现这里面坑很深呀,在网上找了一个大牛的博客,准备下来继追OPENCV同时,再来追一个RCNN的学习笔记的博文,博文地址如下:http://blog.cs ...

  2. Android TextWatcher监控EditText中的输入内容并限制其输入字符个数

    布局中EditText在android布局中经常用到,对EditText中输入的内容也经常需要进行限制,我们可以通过TextWatcher去观察输入框中输入的内容,作个笔记. 主布局: <?xm ...

  3. 自定义分词器Analyzer

    Analyzer,或者说文本分析的过程,实质上是将输入文本转化为文本特征向量的过程.这里所说的文本特征,可以是词或者是短语.它主要包括以下四个步骤: 1.分词,将文本解析为单词或短语 2.归一化,将文 ...

  4. gulp watch error ENOSPC

    in linux you fix this with the command:echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sy ...

  5. Java线程锁一个简单Lock

    /** * @author * * Lock 是java.util.concurrent.locks下提供的java线程锁,作用跟synchronized类似, * 单是比它更加面向对象,两个线程执行 ...

  6. centos6.6编译安装lnmp系列之nginx

    简介: 环境:虚拟机+centos6.6 Cmake下载地址:http://www.cmake.org/files/v3.0/cmake-3.0.2.tar.gz Nginx 下载地址: http:/ ...

  7. EasyUI关于 numberbox,combobox,validatebox 的几个小问题

    在最近的项目中,首次使用到了 网页的一个布局框架——EasyUI,感觉这个框架特别牛,兼容性很不错,页面效果也挺不错,可是在使用标题上三个控件过程中遇到几个很奇特的问题,让我头疼不已,所以在此给广大I ...

  8. 获取ip

    需要引用System.Web http://stackoverflow.com/questions/4879837/smart-way-to-get-the-public-internet-ip-ad ...

  9. mysql 增删改查基本语句

    增: insert insert into 表名(字段1,字段2,字段3......字段N) values(值1,值2,值3): 如果不申明插入那些字段,则默认所有字段. 在插入时注意,往哪个表增加, ...

  10. [jetbrains系列] 外链第三方库+代码补全设置

    jetbrains系列的IDE真的是太好用了,有种相见恨晚的感觉. 在开发过程中第三方库是必不可少的,在开发的时候如果有一个可以补全的IDE可以节省查文档的时间. 举个例子:给pycharm配pysp ...