黑马程序员—OC(归纳总结OC特有的语法)

本文深入探讨了Objective-C中的类与SEL机制,包括分类的使用、类的本质、方法的加载与初始化、description方法的作用、SEL对象的创建及用途等核心内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                                  ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 

一、 分类—Gategory

           在不改变原来模型的前提下,给类扩充一些方法,通常选取两种方法:继承和分类。


     1. 格式  

         *  分类的声明

                @interface   类名  (分类名称)

                //     方法声明

                 @end 

         

           *  分类的实现

                  @implementation   类名   (分类名称)

                   //     方法实现

                   @end

         2.  好处

              一个庞大的类可以分模块开发。可以由多个人来编写,利于提高效率。

      使用注意:


                       1>  分类只能增加方法,不能增加成员变量


                        2>  分类方中可以访问原来类中声明的成员变量


                        3>   分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法使用。


                        4>  方法调用的用的优先等级: 分类(最后参与编译的分类优先)——>原来的类——>父类。


二、类的深入学习

        1.  类的本质

              类本质也是一个对象,是Class类型的对象,简称“ 类对象 ”。


              类名代表类对象,每个类只有一个类对象。(类对象 == 类)。


              例如  : 

                        //     内存中的类对象

                         Class  c = [ p   Class] ;   //    c 是一个类对象,相当于一个类


                         Person  *p2 = [ [c   new ]    init ] ;  //   c 相当于Person   —>     [ [ Person  new ]     init ] 

                      

         2. +load  和 +initialize(类的加载和初始化)


               +  load 程序一启动,类就会加载一次项目中所以的类和分类,加载完毕后就会调用每个类和分类的+load方法,只会调用一次  。


               + initialize 当第一次使用这个类的时候,就会调用当前类一次initialize方法。   


         3.  获取类对象的两种方式:


               Class  c  = [ Person   class ] ;   //   类方法   注意:Class类型创建对象时不需要加*,c里面已经包含*


              或者 

               Person   * p = [  Person   new ] ;   


               Class  c2 = [ p   class ] ;    //   对象方法       p 相当于上面的Person  


            4.  类对像调用类方法


               Class  c = [ Person    class ] ;


               Person  *p2 = [ c    new ] ;

三、 description  方法

           - description 方法:

                           使用NSLog和%@输出某个对象时,会调用对象的 - description方法,并得到返回值进行输出。


            + description 方法

                            使用NSLog和%@输出某个类对象时,会调用类对象+description方法,并得到返回值进行输出。


           修改NSLog的默认输出

                            重写-description或者+description方法即可。

                      

           死循环陷阱

                             例如在-description 方法中使用NSLog 打印self。


四 、SEL

            1 .  sel 对象的创建

                   SEL    s  =  @selector ( test ) ;


                   SEL    s2 = NSSelectorFromString ( @ " test " ) ;


             2.   sel  对象的其他用法


                   //         将SEL 对象转为NSString 对象

                   NSString   *str = NSStringFromSelector ( @selector ( test ) ) ;


                   Person  *p = [ Person   new ] ;



                   //   调用对象 p 的 test 方法

                    [ p    performSelector : @ selector ( test ) ] ;


               3. 关于方法存储的位置


                   1>  每个类的方法都存储在类对象中


                    2>  每个方法都有一个与之对应的SEL类型的对象   


                    3>   根据一个SEL对象就可以找到方法的地址,进而调用方法。

五、 NSLog 输出增强

              1.   _FILE_ :    源代码文件名


               2.  _LINE_ : NSLog     代码在第几行


               3.  _cmd :       代表着当前方法的SEL


六、 NSString  的简单使用

               1.  字符串的创建

                     NSString   *str  = @"Hello" ;  

         

                2.  使用%@输出字符串 


                     NSString  *name = @ " uncle " ;

                      NSLog (@"我的名字是%@", name)  ;


                     

                            

          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值