一些iOS心得
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心得的更多相关文章
- 【转】Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得
iOS模拟器简介 iOS功能简介 iOS模拟器,是在Mac下面开发程序时,开发iOS平台的程序时候,可以使用的辅助工具. 其功能是,帮你模拟iOS平台设备,在模拟器上运行对应的程序,以方便你没有实体设 ...
- iOS 开发者计划申请 2014 年最新心得[转]
iOS 开发者计划申请 2014 年最新心得 http://myfairland.net/ios-developer-program/
- ios中关于delegate(委托)的使用心得
ios中关于delegate(委托)的使用心得 分类: iOS开发2012-05-15 10:54 34793人阅读 评论(9) 收藏 举报 iosuiviewtimerinterfaceprinti ...
- iOS学习心得——UITableViewCell的复用
UITableView是在iOS开发中最常用的控件之一.我的第一篇学习心得献给它了 UITableView是由一行一行的UITableViewCell构成的. 首先想这 ...
- iOS 开发 UI 搭建心得(一)—— 驾驭 StoryBoard
本系列文章中,我们将一起认识.了解当下 iOS 开发中几种常见的 UI 构建方式,分析他们分别适合的使用场景,以便让我们在以后的开发中,能够在恰当的时间.场景下做出最佳的选择,提升开发效率,增强程序的 ...
- ios面试心得
第一部分:面试题 注意,下面这些题只是我准备的题库.在实际面试的时候我会根据面试者的水平抽出相应的题目来出的. 技术 基础 为什么说Objective-C是一门动态的语言? 讲一下MVC和MV ...
- GCDAsyncSocket类库,IOS下TCP通讯使用心得
关于在IOS下使用Socket进行通讯的技术文章也许诺很久了,今日又是一个还债的日子,网上虽然很多介绍过AsyncSocket或GCDAsyncSocket的文章,但其实就那么一两篇大部分都是转载,于 ...
- iOS:学习runtime的理解和心得 (转)
Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西.最近在学习Runtime,有自己的一些心得,整理如下, 一为 查阅方便 二为 或许能给他人一些启发, 三为 希 ...
- 一位 iOS 大牛的 BAT面试心得与经验总结,送给正在迷茫 的你!
前言: 目前形势,参加到 iOS 队伍的人是越来越多,可以说是已经达到了供过于求的地步了. 今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,之前实习的时候就想着写一篇面经,后来忙就给忘了, ...
随机推荐
- -XX:+TraceClassLoading 监控类的加载
-XX:+TraceClassLoading –监控类的加载 •[Loaded java.lang.Object from shared objects file] •[Loaded java.io. ...
- 【002: NetBeans 的 代码补全】
在 代码完成中,输入如下内容 q;w;e;r;t;y;u;i;o;p;a;s;d;f;g;h;j;k;z;x;c;v;b;n;m;Q;W;E;R;T;Y;U;I;O;P;A;S;D;F;G;H;J;K ...
- mysql时间格式DATE_FORMAT()
1.以下是mysql查询中用到的时间格式的转化形式例子:SELECT DATE_FORMAT(NOW(),'%Y-%m-%d') -- 2015-10-28 SELECT DATE_FORMAT(NO ...
- POJ - 1978 Hanafuda Shuffle
最初给牌编号时,编号的顺序是从下到上:洗牌时,认牌的顺序是从上到下.注意使用循环是尽量统一“i”的初始化值,都为“0”或者都为“1”,限界条件统一使用“<”或者“<=”. POJ - 19 ...
- 解除SQL对组件"Ad Hoc Distributed Queries"的"STATEMENT'OpenRowset OpenDatasource"的访问
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为 ...
- java ftp下载文件
1.使用官方正规的jar commons-net-1.4.1.jar jakarta-oro-2.0.8.jar 注意:使用ftp从windows服务器下载文件和从linux服务器下载文件不一样 2. ...
- python: jquery实现全选 反选 取消
引入这个jquery-1.12.4.js jquery实现全选 反选 取消 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitio ...
- [课程设计]Scrum 多鱼点餐系统(团队交流日)
[课程设计]Scrum 多鱼点餐系统(团队交流日) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统WEB ...
- 公历和农历转换JS代码
<!-- function CalConv(M) { FIRSTYEAR = 1936; LASTYEAR = 2031; LunarCal = [ new tagLunarCal(23, 3, ...
- 将B表的字段内容插入到A表字段中
update hy_b_hacker as h , ( SELECT ( @rowNO := @rowNo +1 ) AS rowno, ip FROM ( SELECT * FROM hy_b_se ...