黑马程序员_OC语言之类方法和关键字self

一 、类方法:


------ IOS培训、android培训、期待与您交流!-------


     #import<Foundation/Foundation.h>

     @interface Person:NSObject

     {
          int age;
      }

     //类方法都是以+开头的
     
     + (void)printfClassName;

     + (void)test;

     - (void)test;

     @end

     @implementation Person

     + (void)printfClassName   //类方法

     {
          //实例变量age不能在类方法中访问
 
          NSLog(@"这个类叫做Person-%d",age);
      }

      + (void)test

      {
           NSLog(@"3333");
       }

      - (void)test

      {
           NSLog(@"调用了test方法");
       }
    
     @end   

     int main()

     {   //调用类方法用类名调用

         [Person printfClassName];

         [Person test];

          Person *p = [Person new];
          
          return 0;
      }

     注::1.如果用对象调用类方法,那么会发出一个不能识别的警告;

            2.允许类方法和对象方法重名;

     小结:1.对象方法:1>、减号-开头;2>、只能由对象来调用;3>、对象方法中能访问当前对象的成员变量;4>、对象方法中可以调用类方法;

           2.类方法:1>、加号+开头;2>、只能由类(名)来调用;3>、不能访问成员变量;

           3.可以允许类方法和对象方法重名;      

           4、实例变量不能在类方法中访问;

     类方法的好处和使用场合:1>、不依赖于对象,执行效率高

                            2>、能用类方法尽量用类方法

                            3>、场合:当方法内部不需要使用到成员变量时,就可以改为类方法

二、self关键字

    #import<Foundation/Foundation.h>

    @interface Peson : NSObject

    {
         int _age;
     }

     - (void)setAge:(int)age;

     - (int)age;

     - (void)test;

    @end

    @implementation Person

     - (void)setAge:(int)age

     {
          -age=age;  
 
          self->_age=age
      }

     - (int)age

     {
           return _age;
      }

     - (void)test
     {
          int _age=20;
    
          NSLog(@"Person的年龄是%d岁",self->age);//self是一个指针,指向方法调用者
     }
  
     @end

     int main()

     {
          Person *p = [Person new];

          [p setAge:10];

          [p test];
           
          return 0;
      }

      注:1>、self是一个指针,指向调用当前方法的那个对象;

          2>、可以代表当前对象;


      self的用途:1>、概念:指向当前对象(方法调用者);

                 2>、在对象方法中,可以利用"self->成员变量名"访问当前对象内部的成员变量;

                 3>、 在对象方法中self代表当前对象,可以调用对象方法  [self 方法名];

                 4>、在类方法中,self代表类,可以调用其他类方法;

                 5>、也就是谁调用了self,self就代表谁;

       

       self使用注意:1>、self在使用时注意会引发死循环
 
                     2>、self出现在对象方法中,self就代表对象

                     3>、self出现在类方法中,self就代表类
           

  ------ IOS培训、android培训、期待与您交流!-------


                 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值