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补充的更多相关文章

  1. OC NSString 基本操作(用到补充持续更新)

    1.将字符串拆分成数组 NSString *string = @"1,2,3,4"; NSArray *array = [string componentsSeparatedByS ...

  2. 嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比

    C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(i ...

  3. 嵌入式&iOS:回调函数(C)与block(OC)回调对比

    学了OC的block,再写C的回调函数有点别扭,对比下区别,回忆记录下. C的回调函数: callBack.h 1).定义一个回调函数的参数数量.类型. typedef void (*CallBack ...

  4. JS 与OC 交互篇

    完美记录交互 CSDN博客: (OC调用JS) http://blog.csdn.net/lwjok2007/article/details/47058101 (JS调用OC) http://blog ...

  5. iOS OC语言: Block底层实现原理

    先来简单介绍一下BlockBlock是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,Block可以在任何时候执行. Block和函数的相似性:(1)可以保存代码(2) ...

  6. 关于OC中的小数精确计算---NSDecimalNumber

    NSDecimalNumber 翻译补充自:http://rypress.com/tutorials/objective-c/data-types/nsdecimalnumber 感谢乐于分享的大神 ...

  7. 02第一个OC程序

    一.打开XCode4.6.3,新建项目 二.选择Application下的命名行项目 三.输入项目名称,选择Foundation框架创建项目,点击Next 四.二话不说.点击Run.启动我们创建的项目 ...

  8. swift基础:第三部分:对第一部分的补充说明

    今天是我学习swift的第二天,虽然我和swift的距离有点远,但我相信,我会慢慢的接近这门语言的.好了,我们聊聊昨天晚上的事吧,昨天晚上下班早,回到家时,真是惊喜哈,宿舍那两做好了饭,等我吃饭,想对 ...

  9. OC基础--多态 及 三特性小练习

    什么是多态 什么是多态: 多态就是某一类事物的多种形态 猫: 猫-->动物 狗: 狗-->动物 男人 : 男人 -->人 -->动物 女人 : 女人 -->人 --> ...

随机推荐

  1. Request url 各种属性值

    網址:http://localhost:1897/News/Press/Content.aspx/123?id=1#toc Request.ApplicationPath / Request.Phys ...

  2. Xcode Could not load NIB 的一个问题解决

    # Could not load NIB 的一个问题 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pr ...

  3. 经典排序算法及python实现

    今天我们来谈谈几种经典排序算法,然后用python来实现,最后通过数据来比较几个算法时间 选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据 ...

  4. poj 1080

    http://poj.org/problem?id=1080 知识点 :最长公共子序列 要点: 转移方程  f[i][j]  = max{ f[i-i][j]+score[s1[i-1]]['-'], ...

  5. HTTP status codes

    响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行.响应码分五种类型,由它们的第一位数字表示:1.1xx:信息,请求收到,继续处理2.2xx:成功,行为被成功地接受.理解和采纳3 ...

  6. hibernate HQL查询 2.2

    hql(都要在事务中完成)session.beginTransaction();session.getTransaction().commit(); session.beginTransaction( ...

  7. uvalive 3971 - Assemble(二分搜索 + 贪心)

    题目连接:3971 - Assemble 题目大意:有若干个零件, 每个零件给出的信息有种类, 名称, 价格, 质量,  现在给出一个金额, 要求在这个金额范围内, 将每个种类零件都买一个, 并且尽量 ...

  8. 基于visual Studio2013解决C语言竞赛题之0202坐标转换

    题目

  9. java学习之字符流与字节流的转换

    package com.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce ...

  10. poj 1979 Red and Black(dfs)

    题目链接:http://poj.org/problem?id=1979 思路分析:使用DFS解决,与迷宫问题相似:迷宫由于搜索方向只往左或右一个方向,往上或下一个方向,不会出现重复搜索: 在该问题中往 ...