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. MySQL几种方法的数据库备份

    MySQL有几个方法来备份 最近博客一直想写点.可是不知道写什么,感觉自己近期的知识没有什么添加,今天想到了一篇能够写的博客.曾经试过依据data目录备份MySQL.可是从来没有成功过.前几天帮助朋友 ...

  2. Java输入输出流(1)

    1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java全部的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...

  3. Ext JS学习第五天 Ext_window组件(一)

    此文来记录学习笔记 •第一个组件:Ext.window.Window.对于组件,也就是Ext最吸引开发者的地方,那么我们要真正的使用Ext的组件,首先必须学会阅读API文档. –xtype:组件的别名 ...

  4. 在C#中使用 Win32 和其他库

    C# 用户经常提出两个问题:“我为什么要另外编写代码来使用内置于 Windows® 中的功能?在框架中为什么没有相应的内容可以为我完成这一任务?”当框架小组构建他们的 .NET 部分时,他们评估了为使 ...

  5. C/C++ 笔试、面试题目大汇总(转)

    这些东西有点烦,有点无聊.如果要去C++面试就看看吧.几年前网上搜索的.刚才看到,就整理一下,里面有些被我改了,感觉之前说的不对或不完善. 转自fangyukuan,地址http://www.cnbl ...

  6. linux ln 命令(转载)

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件. 当我们需要在不同的目录,用到相同的 ...

  7. CXF 开发 WebService

    什么是CXF: Apache CXF = Celtix + Xfire 支持多种协议: SOAP1.1,1.2 XML/HTTP CORBA(Common Object Request Broker ...

  8. CloudStack修复bug

    CloudStack应用越来越广,但是随着测试也遇到了越来越多的bug. 不想等待新版本发布而且又急于修复某些bug的童鞋,可以参考下本文内容. CloudStack是java语言写成,发布时会发布为 ...

  9. JAVA中IO和异常处理练习

    1.SystemI\O练习:1)通过键盘输入若干字符,并通过显示器输出:2)定义一个静态方法validOrNot()用于对输入的字符进行合法性校验,若包含非英文字符,则抛出IllegalStringE ...

  10. Android Input设备debug技巧

    一.驱动层 检查是否有点上报 adb shell getevent -l /dev/input/eventX 检查input设备支持的属性值 adb shell getevent -i /dev/in ...