self,super,protocol,category,extension 的用法

1. self 的用法

   如果self在类的对象中,则表示这个的对象,在类方法中表示类.

2.有什么用

    可以在类中用来表示调用者,去调用方法或者属性

3. 何时用

    当需要在类方法中调用方法或属性时.


特点:在方法中不能调用方法自己, 用self时不要在方法中用self调用方法本身,这样会产生死递归.


5. super 的用法

   表示调用父类中的方法

 

6 . 使用场合:

          当子类重写父类的方法后,在某些情况下,又需要用到父类方法的功能.

 

    注意:对象方法中只能调用父类的对象方法.类方法只能调用对象的类方法.

   

  如果子类没有重写父类的方法,没有必要用super.用self.

    


      所以只有在子类重写了父类方法的时候,我们调用父类方法,才要用super.

    

      属性不能用super.因为子类不能重写父类的属性.

 ***super只适用于方法.

   super不能调用属性,self可以调用.


   属性(成员变量)的作用域,由权限修饰符控制的

7.成员变量的常用作用域有4种:

@public 全局都可以访问

@protected 只能在类内部和子类中访问

@private 只能在类内部访问

@package  用于框架之间


8. 什么是协议

     一些方法的声明,一般写到一个.h的头文件中

    方法有两种:必须实现 required 选择实现 optional 


9. 协议的作用

     供其他的类去遵守,如果一个类遵守了一个协议,就应该实现这个协议中定义的必须要实现的方法


10. 如何定义一个协议:

      @protocol xxx <NSObject>默认情况下遵守NSObject协议

 @end 

 

11 .类遵守协议的格式:

a.遵守一个协议 ,先导入头文件

@interface 类名 :NSObject <xxx>


@end 


12.遵守多个协议

@interface 类名: NSObject <xxx,aaa,bbb>

@end

注意点:

如果一个类遵守了一个协议,就应该实现这个协议中定义的必须要实现的方法


 13 - 使用协议的流程:

     //--> 定义协议

     // --> 让类遵守这个协议

     // --> 实现协议中对应的方法(必须要实现的)

 

14- 协议与协议之间可以包含

 

    可以类比头文件包含头文件之后,是不是相当于有了其他头文件的声明

 


15.分类的概念及作用
      category是oc特有的语法,其他语言没有的语法
      category:分类\类别\类目(一般叫分类)

16.分类的作用
     在不修改原有类的基础上增加新的方法    

    一个庞大的类可以分模块开发

     一个庞大的类可以由多个人来编写,更有利于团队合作.


17.使用分类的步骤

先声明分类 ->>实现分类->>使用分类中的方法

注意:类别的命名规则:类名+扩展方法,如"NSString+countNum"

18.分类使用的注意事项:

在分类的声明中不能声明实例变量

不能定义实例变量也不能使用@property

在分类的方法中,可以访问类中的实例变量

a.在分类中存在和类同名的方法

   优先访问的时 分类中的方法


b. 当在多个类别中有同名的方法的时候,这时候执行的最后编译的那个类别的同名方法

分类的>原类

最后编译的分类>其他的分类


19.声明类别格式:

a.新添加的方法必须写在@interface与@end之间

b.ClassName现有的类名(要为哪个类扩展方法)

c.CategoryName 待声明的类别名称

d.NewMethod新添加的方法

注意:不允许在声明类别的时候定义变量


20.实现类别格式

a.新方法的实现必须写在@implementation与@end之间

b.ClassName现有类的类名

c.CategoryName 待声明的类别名称

d.NewMethod 新添加的方法的实现


21.非正式协议的概念

非正式协议就是给NSObject类创建的类目(分类)又叫做非正式协议,非正式协议一般不需要进行实现,一般在子类中进行方法的重写.

所谓非正式协议就是类别,即凡是NSObject或其子类的类别,都是非正式协议.


// 计算字符串长度.

NSString *str=@"abc12sdfsdfjl234l5";"


22.类延展的概念

延展类别又称为扩展(Extendsion)

延展,延展类别,扩展,这几个是一个概念.

这种写法的类别叫匿名类别,又叫类扩展,所谓的扩展其实就是为一个类添加额外的原来没有的变量,方法或者合成属性. // 面试会问


延展是一个特殊的分类

特点: 1可以在延展中定义实例变量

         2.不能使用@implementation类名 ( ) 实现类别的方法

   
   
  1. @interface Person :NSObject
  2. @property int age ;
  3. @end
  4. @interface Person ( ) {   // 在原有的类方法中,延展一个方法
  5. float _weight;
  6. }
  7. -(void)run;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值