OC补充
OC
1成员变量默认初始化为0
2匿名对象:就是没有名字的对象,比如:(不建议使用)
3 [Car new]->speed = 300;
[[Car new] run];(运行结果speed为0,因为又重新创建新的对象了)
4 API查询:help->API
安装离线文档方法:右击Xcode.app->显示包内容->contents->developer->documentation->docsets,然后把离线文档docsets放进去。
第二种安装方法:资源库-> developer->shared->documentation->docsets
5 实例变量不能在类方法中访问,因为实例变量只能由实例对象访问
6 类方法中不能访问成员(实例)变量
7 open ./
8 OC不允许子类和父类拥有相同的成员变量,可以有相同的方法
9 OC继承示意图:
10 isa是NSObject的一个成员变量,每一个对象都会有一个isa指向该对象对应的类。
11 对象(或类)调用某个方法时,优先在当前类中找,找不到在去父类中去找
12 耦合就是两个事物关系紧密,你离不开我,我离不开你。
13 继承的使用场合:当A类拥有B类的部分属性和方法,就可以考虑让B类继承A类
14 继承和组合的使用场合
继承:xxx是xxx,组合:xxx拥有xxx,如何正确使用继承和组合呢?可以试着把这两个类套进去读读看哪个顺?比如:有两个类,一个是成绩类(语文,数学),一个是学生类,套进去,学生是成绩?学生拥有成绩,这时就应该使用组合。
15 super关键字:使用super可以调用父类的方法。如果super处在的方法是对象方法就会调用父类的对象方法,反之则类方法。super的使用场合:子类重写父类的同时保留父类的一些行为
16 多态就是父类指针指向子类对象,调用方法时会检测对象的真实对象(子类)。
多态的使用:如果参数中使用父类类型,可以传入父类和子类对象。多态指针调用方法注意,编译的时候先看看父类有没有该方法,运行的时候是调用子类的方法。
多态有一个局限性,就是父类类型的变量不能直接调用子类特有的方法,可以通过强制转换进行调用。
17 - (void)setX:(double)x andY:(double)y
{
[self setX:x];
[self setY:y];
}如果有重复的代码可以使用self调用那个方法
18 math.h中有一个函数pow(n,m)求n的m次方,sqrt(n)对n开根。
19 有时间做下李明杰留的作业
20 command+q全部退出
21 #pragma mark – 注释
22 @property int age, weight;
23 @property生成的成员变量是私有的,如果在@interface中已经写了该成员变量(默认是@protected)就不会生成一个私有的成员变量。
24 @synthesize age;默认访问age这个成员变量,不是_age
25 如果重写setter和getter方法就用自己写的。
26 如果同时重写了setter和getter方法就不会自动生成_开头私有的成员变量,只写一个还是会生成_开头私有的成员变量(上机试下)
27 id相当于NSObject *,id指向任何OC对象
28初始化父类,(谁的成员变量就交给谁处理)
29 init执行过程
30 修改Xcode模版路径:
/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates
* File Templates 文件模板:可以修改类文件等
* Project Templates 项目模板:可以修改一些项目描述
31 分类只能增加方法,不能增加成员变量,但是分类方法中可以访问原来类中声明的成员变量,
(32 分类优先级较高,如果在分类中跟原来的类有同名的方法,优先选用分类中的方法,如果有多个分类覆盖原来类的方法,使用最后编译的那个分类中的方法,可以在项目名称->build->compile source中查看
33 对象调用方法时,优先去分类中找,找不到去原来类中找,还找不到最后去父类中去找。
34分类可以重新实现原来类中的方法,但是会覆盖原来的方法,会导致原来的方法无法使用,不建议这么用)
35 删除一个框架时注意,不要选择move to trash(移至废纸篓),不然框架就真没了
36 给NSString增加一个方法,计算字符串中阿拉伯数字的个数。
这里用到一个方法characterAtIndex:NSUInteger通过下标获得该下标字符,c>=’0’ && c<=’9’
37给NSString增加一个对象方法,计算字符串中阿拉伯数字的个数。
38 在创建对象之前,系统会先把类加载进内存。
39 类对象:类也是对象,其类型是Class,(不带*,内部已经加过)。所有对象都有一个继承自NSObject的属性isa,指向对象对应的类。
40 获取内存中的类对象->Class c = [p class];//通过对象获取,还有一种方式Class c = [Person class];//通过类获取
41 类名就代表类对象。
42 +(void)load;// 当程序启动时会加载一次项目中所有的类以及分类,类加载完毕后就会调用此方法,先加载父类在加载子类。
43 +(void) initialize; // 第一次使用这个类的时候,就会调用一次此方法。先初始化父类在初始化子类。分类是最后加载的。
44 description方法,在NSLog里,打印对象的时候,系统会先去调用-description方法,将返回值(NSString*)显示到屏幕上。不要在description方法里使用NSLog方法会引发死循环。打印类的时候,先去调用+description方法,原理同上。
45 NSLog输出C语言字符串的时候,不能有中文,应该使用printf。
46 __func__输出当前函数名%s,__FILE__输出源文件绝对路径%s-(printf),__LINE__输出当前行号%d
47 调用对象的方法还有一种方式perfromSelctor:(SEL) withObject:(id) //SEL是方法名,id是给该方法传参数
48 NSSelectFromString返回SEL,把一个字符串转换成方法名
49 NSStringFromSelector 返回字符串,把一个方法名转换成字符串
50 每一个对象方法里面都有一个(SEL)_cmd代表当前方法,可以通过转换成字符串打印证明。
51 SEL是对方法的一种包装,讲方法包装成一个SEL类型的数据,去找对应的方法地址,找到方法地址就可以调用方法。
52 ARC的判断准则:只要没有强指针指向对象,就会释放对象
指针分2种,强指针,弱指针。默认所有对象都是强指针
Assign用在基本数据类型,适用于非OC对象
Strong,weak适用于OC对象
53 把老项目MRC转换成ARC方法:edit->refactor->convert to ARC…
54 在ARC环境下,如果某些文件不想使用ARC就在build phases中把这些文件双击后写入-fno-objc-arc改为MRC,反之写入-f-objc-arc
55 当两端循环引用的时候一端用weak,一端用strong
PS:摘自李明杰视频教程,非常感谢李老师详细的讲解!
OC补充的更多相关文章
- OC NSString 基本操作(用到补充持续更新)
1.将字符串拆分成数组 NSString *string = @"1,2,3,4"; NSArray *array = [string componentsSeparatedByS ...
- 嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比
C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(i ...
- 嵌入式&iOS:回调函数(C)与block(OC)回调对比
学了OC的block,再写C的回调函数有点别扭,对比下区别,回忆记录下. C的回调函数: callBack.h 1).定义一个回调函数的参数数量.类型. typedef void (*CallBack ...
- JS 与OC 交互篇
完美记录交互 CSDN博客: (OC调用JS) http://blog.csdn.net/lwjok2007/article/details/47058101 (JS调用OC) http://blog ...
- iOS OC语言: Block底层实现原理
先来简单介绍一下BlockBlock是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,Block可以在任何时候执行. Block和函数的相似性:(1)可以保存代码(2) ...
- 关于OC中的小数精确计算---NSDecimalNumber
NSDecimalNumber 翻译补充自:http://rypress.com/tutorials/objective-c/data-types/nsdecimalnumber 感谢乐于分享的大神 ...
- 02第一个OC程序
一.打开XCode4.6.3,新建项目 二.选择Application下的命名行项目 三.输入项目名称,选择Foundation框架创建项目,点击Next 四.二话不说.点击Run.启动我们创建的项目 ...
- swift基础:第三部分:对第一部分的补充说明
今天是我学习swift的第二天,虽然我和swift的距离有点远,但我相信,我会慢慢的接近这门语言的.好了,我们聊聊昨天晚上的事吧,昨天晚上下班早,回到家时,真是惊喜哈,宿舍那两做好了饭,等我吃饭,想对 ...
- OC基础--多态 及 三特性小练习
什么是多态 什么是多态: 多态就是某一类事物的多种形态 猫: 猫-->动物 狗: 狗-->动物 男人 : 男人 -->人 -->动物 女人 : 女人 -->人 --> ...
随机推荐
- python下异常处理
1.python下异常如何处理: #encoding=utf-8 """ python遇到异常,程序直接运行 try: "判断有可能抛出异常的代码" ...
- UC/0S2之中断
中断是计算机系统处理异步事件的重要机制.当异步事件发生时,事件通常是通过硬件向cpu发出中断请求的.在一般情况下,cpu响应这个请求后会立即运行中断服务程序来处理该事件: 为了处理任务延时.任务调度等 ...
- filter, sort
def is_odd(n): return n % 2 == 1 t = list(filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 0])) print(t) # ...
- java反射机制入门04
需要jxl.jar package com.rainmer.main; import java.io.File; import java.io.IOException; import java.uti ...
- BZOJ 1863: [Zjoi2006]trouble 皇帝的烦恼( 二分答案 )
二分答案..然后从头到尾推一下, 看最后一个能不能取0个和第一个人相同的勋章 ------------------------------------------------------------- ...
- 初探响应式Web设计
公司书柜有本<响应式Web设计:HTML5和CSS3实战>,大概就认真看了前面几章,后面大部分介绍css3(随便找本手册都可以了要你可用!) <响应式Web设计:HTML5和CSS3 ...
- oracle修改数据库语言
alter session set nls_language = 'simplified chinese'; alter session set nls_language = 'american'; ...
- 使用BeautifulSoup解析XML文档
有200多个XML文档,每个文档类似如下: <?xml version="1.0"?> <VehicleInfo> <FileHeader> & ...
- Python开源异步并发框架
Python开源异步并发框架的未来 2014年3月30日,由全球最大的中文IT社区CSDN主办的“开源技术大会·” (Open Source Technology Conference ,简称OSTC ...
- 资源文件(.RES)的应用
资源档有什麽用处呢?最重要的有两个地方1.国际发行:我们将Application中所有的文字从Resource用读取,那麽,只要更动 Resource档的内容,就可以用不同语言的 ...