objective -c 特性笔记

来源:互联网 发布:蓝牙共享网络用不了 编辑:程序博客网 时间:2024/05/16 04:28

1.@interface Circle :NSObject

  • 借口关键字:interface
  • @interface Circle : 名为Circle的新类定义的接口。
  • 继承自  NSObject;
2{ }的理解
  • 其中包含的是类的数据成员;
  • 每次创建Circle对象时,都将包含这两个实例变量;
  • 注意:fillcolor,bounds 称为类的数据成员;而Circle类对象的值称为实例变量。
3.方法声明
  • (void) setFillColor   :  (ShapeColor)    fillColor    ;
  • 方法类型      返回类型  方法名   方法接受的参数  参数的类型       参数名

4中缀符
  1. 利用中缀符,可将方法的名称和参数合在一起;
  2. 调用带一个参数的方法:
  3. [circle setFillColor : kRedcolor];
  4. 调用带两个参数的方法:
  5. [circle setFillColor:kRedcolor setBounds:rect];                                                                                                                                                          
5.
1.@implementation
一个编译器指令,表明将为某个类提供实现代码。
2.接着是各个方法的定义,不必按声明顺序出现,甚至可以实现声明中没有的方法。
3.@interface  和@implemention 间的参数名不同是正确的,且需要不同。
声明处:-(void) setFillColor :(ShapeColor) fillColor;
实现处:-(void) setFillColor :(ShapeColor) c
{
fillColor = c;
}
在实现中,我们必需区分参数名称和实例变量的名称,最简单的方式就是我们将参数重新命名。
4.oc调用方法时,一个隐藏参数(self)将被传递给接收对象,这个参数引用的就是该接收对象。该参数传递过程是秘密和自动的,程序员不必实现。即类中的方法可以直接使用其实例变量的值。

6.实例化:为对象分配内存,并在这些内存中保存一些默认值。
  • 向相应的类发送new消息,创建对应的对象。
  • new方法等价于alloc+init。
7.id类型变量
  • id可以接收指向任意类型的指针。
  • 在未接受指针之前,不能调用方法。
8.实现类的三个步骤
  • 类接口
  • 类实现
  • 使用类

类接口最为重要;
超类,数据成员,方法;
超类常使用NSObject,NSObject的子类。

9.

NSLog(@"%@“);


第一个@ 表示后面输出一个NSString类型的对象。

后一个%@ 表示oc的一个任意类型的对象。

10.

Car *car;  //定义了一个Car对象的指针

car =[Carnew];//生成了一个Car对象,包含5个空指针,并把地址赋给Car对象指针  

new alloc init 若要改变初始化状态,对init进行重写。

11.
init 对所有数据成员进行初始化。
有两个数据来源,一个来自超类,一个自身新增。

if(self = [ super init ])
  • 此处调用消息[super init],让超类完成初始化;
  • init方法返回值(id类型)描述了被初始化的对象。
  • 将[super init]的结果赋给self是oc的惯例,以防止超类在初始化过程中返回的对象不同于原先创建的对象。
12.区分new,init 函数

[engine new]  = [[engine alloc]init]
  • alloc 用后,内存会被清零
  • 调用init后,让对象处于可用状态。
13.
NSLog(@"%@",engine);    //cocoa类中添加description方法就可自定义nslog()如何输出一个对象。
结果是:i have an engine
@interface Engine : NSObject {    }//-(void)print;-(NSString *)description;@end@implementation Engine-(NSString *)description{    return (@"i have an Engine");}//-(void)print//{//    NSLog(@"this is an Engine");//}@end    //Engine
14.
存取方法(accessor method)
用来读取或改变对像特定属性的方法
修改方法(mutator method)
用来改变对象状态的方法
是类的对象方法。
理解:
setter:为对象中某属性赋值;
getter:提供读取对象属性的途径;
对其他对象属性进行操作时,应该始终使用对象所提供的存取方法,而不直接操作其他对象的属性。
存取方法常成对出现,也可不成对出现。

使用规则:
setter: set +属性名称
getter: 属性名称

不使用get前缀,因为其在cocoa中有特殊含义:把指针当作参数传入函数,来获取返回值。

对数组操作存取方法的实质:
  • 对数组操作,需要数组首地址、数组下标;//数组首地址直接访问类的数据成员,数组下标是参数。
  • 在方法中确定数组首地址、下标。

15.类的对象的方法的数据来源有两个
  • 直接访问类的数据成员
  • 参数
16.return 和exit 的区别

exit()
是一个函数,结束一个进程,将删除进程使用的内存空间,并返回错误信息。

exit 不需要考虑函数返回值类型;

exit (0)--表示正常退出,非0表示非常正退出。
不能轻易使用。

return
返回函数值,是关键字

16.父类指针可以指向子类对象

17.导入头文件
有两种不同的方法
  • 尖括号的语句用来导入系统头文件;
  • 带引号的语句则说明导入项目本地头文件;

本章总结:

  1. 面向过程式编程:函数第一,数据第二
  2. 面向对象编程    :数据第一,函数第二

  3. 消息,方法,self指针及其三者关系
  4. 向类发送new消息可创建新对象
  5. 好的软件实体,应对扩展开放,对修改关闭


原创粉丝点击