object-c常见的知识点-1

1、@interface 生命类

2、@implementation 实现类

3、@protocol 声明协议

4、@optional 与 @protocol配合使用,说明协议中某个或某几个协议方法可以不实现

5、@required 与@protocol配合使用,说明协议中的某个方法或者某几个方法必须实现

6、@end  与@interface,@protocol,@implementation配合使用,代表声明或者实现结束

7、@encode 为编译器宏,它可以将类型转换为相应的字符串。

8、id

            是指向object-c类对象的指针,它可以声明为任何类对象的指针,当在objectIve-c使用id是,编译器会假定你知道,id指向哪个类的对象,与void*不同的是,void*不知道也不假定指向任何类型的指针。

9、nil

           定义为一个常量,如果一个指针的值为nil,代表这个指针;没有指向任何对象

10、self

           在objectIve-c,关键字self与c++中this是同一概念,就是类对象自身的地址,通过self可以调用自己的实例变量和实例方法。

11、super

            当子类调用父类的方法时,会用到super关键字,super指向的是父类的指针,子类重写父类的方法时,调用父类的方法是比较好的习惯,因为我们不知道父类在该方法中实现的功能,如果不调用父类的方法,有可能重写的方法会失去该功能,这是我们不愿看到的

12、NSNull

           就是没有的意思,如果一个字典中的值为NSNull,那说明与该值对应的key是没有值的,例如key为address,说明与address对应的是值是没有

13、new

         在objectIve-c有一个特性,就是可以把类当成对象来发送消息,这种用法通常用于新建对象时,例如   XXX    *object   =   [XXXX new];

14、类方法   +

         如果想声明属于类而不属于类对象的方法,用+, +用来修饰类的方法,使用+修饰的类方法,是整个类的方法,不属于哪一个类对象,这与c++中的static在类中使用的概念一样。

15、%@

          在NSLog中,使用%@表示要调用对象的description方法。

16、类

         是一种结构,它表示对象的类型,就像int与char一样,也可以声明类的变量

17、实例化

         为类的对象分配内存和初始化,达到可以使用该类对象 的目的

18、 消息

        在objectIve-c中,类的对象执行的操作,是通过给该类或者该类对象发送消息实现,如:[object func];就是给object对象发送func消息,类似c++中的方法的调用。给object对象发送func消息后,object对象查询所属类的func方法执行。

19、方法调度

       当向一个对象发送消息时(调用方法),这个方法是怎么被调用的呢?这就依赖方法高度程序,方法调度程序查找的方法如下:、

       在本类的方法中,找被调用的方法,如果找到了,就调用,如果找不到,就被沿着继承路径去查找,从哪个类找到,就调用哪个类的方法,如果到最根上的类还是没有找到,那编译就会出错。

20、继承和复合

       在objectIve-c中支持继承,但只是支持单一继承(有且只有一个父类)如果想要使用多继承的特性,可以使用分类和协议技术

       复合是通过包含指向对象的指针实现的,严格意义上讲,复合是针对于对象间来说的,对于基本数据类型来说,他们被认为是对象的一部分

21、装箱和拆箱

       由于NSArray,NSDirectiory等类不能直接存储基本数据类型,所以要想在NSArray\NSDirectory中使用基本数据类型就得使用装箱和拆箱

在objectIve-C中,可以使用NSNumber和NSValue来实现对数据类型的包装,NSNumber可以实现对基本数据类型的包装,NSValue可以实现对任意类型数据类型的包装。

讲基本类型封装成对象也叫装箱,从封装的对象中提取基本数据类型叫拆箱,其他语言加Java原生支持装箱和拆箱,objectIve-C不支持自动装箱和拆箱,如果需要得需要自己来实现装箱和拆箱

22、存取方法

       在使用类对象的实例变量(成员数据)时,不要直接使用对象中的实例,要使用存以方法来获取或者修改实例,既setter和getter,在cocoa中,存取方法有命名习惯,我们得符合这种习惯,以便于与其他团队成员合作,setter方法是修改或者设置实例值,命名习惯为set+实例名,例有一个类有path实例变量,那setter命名为setpath,getter方法命名为Path,为什么不是getPath,因为get在cocoa中有特殊的含义,这个含义就是带有get的方法就意味着这个方法通过形参指针来返回值,我们要遵守这个命名习惯或者说规则。

23、@property与@synthesize


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值