• OC补充


    OC

    1成员变量默认初始化为0

    2匿名对象:就是没有名字的对象,比如:(不建议使用)

    3 [Car new]->speed = 300;

    [[Car new] run];(运行结果speed为0,因为又重新创建新的对象了)

    4 API查询:help->API

    安装离线文档方法:右击Xcode.app->显示包内容->contents->developer->documentation->docsets,然后把离线文档docsets放进去。

    第二种安装方法:资源库-> developer->shared->documentation->docsets

    5 实例变量不能在类方法中访问,因为实例变量只能由实例对象访问

    6 类方法中不能访问成员(实例)变量

    7 open ./

    8 OC不允许子类和父类拥有相同的成员变量,可以有相同的方法

    9 OC继承示意图:

     

    10 isa是NSObject的一个成员变量,每一个对象都会有一个isa指向该对象对应的类。

    11 对象(或类)调用某个方法时,优先在当前类中找,找不到在去父类中去找

    12 耦合就是两个事物关系紧密,你离不开我,我离不开你。

    13 继承的使用场合:当A类拥有B类的部分属性和方法,就可以考虑让B类继承A类

    14 继承和组合的使用场合

    继承:xxx是xxx,组合:xxx拥有xxx,如何正确使用继承和组合呢?可以试着把这两个类套进去读读看哪个顺?比如:有两个类,一个是成绩类(语文,数学),一个是学生类,套进去,学生是成绩?学生拥有成绩,这时就应该使用组合。

    15 super关键字:使用super可以调用父类的方法。如果super处在的方法是对象方法就会调用父类的对象方法,反之则类方法。super的使用场合:子类重写父类的同时保留父类的一些行为

    16 多态就是父类指针指向子类对象,调用方法时会检测对象的真实对象(子类)。

    多态的使用:如果参数中使用父类类型,可以传入父类和子类对象。多态指针调用方法注意,编译的时候先看看父类有没有该方法,运行的时候是调用子类的方法。

    多态有一个局限性,就是父类类型的变量不能直接调用子类特有的方法,可以通过强制转换进行调用。

    17 - (void)setX:(double)x andY:(double)y

    {

        [self setX:x];

        [self setY:y];

    }如果有重复的代码可以使用self调用那个方法

    18 math.h中有一个函数pow(n,m)求n的m次方,sqrt(n)对n开根。

    19 有时间做下李明杰留的作业

    20 command+q全部退出

    21 #pragma mark – 注释

    22 @property int age,    weight;

    23 @property生成的成员变量是私有的,如果在@interface中已经写了该成员变量(默认是@protected)就不会生成一个私有的成员变量。

    24 @synthesize age;默认访问age这个成员变量,不是_age

    25 如果重写setter和getter方法就用自己写的。

    26 如果同时重写了setter和getter方法就不会自动生成_开头私有的成员变量,只写一个还是会生成_开头私有的成员变量(上机试下)

    27 id相当于NSObject *,id指向任何OC对象

    28初始化父类,(谁的成员变量就交给谁处理)

     

    29 init执行过程

     

    30 修改Xcode模版路径:

    /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates

    * File Templates 文件模板:可以修改类文件等

    * Project Templates  项目模板:可以修改一些项目描述

    31 分类只能增加方法,不能增加成员变量,但是分类方法中可以访问原来类中声明的成员变量,

    (32 分类优先级较高,如果在分类中跟原来的类有同名的方法,优先选用分类中的方法,如果有多个分类覆盖原来类的方法,使用最后编译的那个分类中的方法,可以在项目名称->build->compile source中查看

    33 对象调用方法时,优先去分类中找,找不到去原来类中找,还找不到最后去父类中去找。

    34分类可以重新实现原来类中的方法,但是会覆盖原来的方法,会导致原来的方法无法使用,不建议这么用)

    35 删除一个框架时注意,不要选择move to trash(移至废纸篓),不然框架就真没了

    36 给NSString增加一个方法,计算字符串中阿拉伯数字的个数。

    这里用到一个方法characterAtIndex:NSUInteger通过下标获得该下标字符,c>=’0’ && c<=’9’

    37给NSString增加一个对象方法,计算字符串中阿拉伯数字的个数。

    38 在创建对象之前,系统会先把类加载进内存。

    39 类对象:类也是对象,其类型是Class,(不带*,内部已经加过)。所有对象都有一个继承自NSObject的属性isa,指向对象对应的类。

    40 获取内存中的类对象->Class c = [p class];//通过对象获取,还有一种方式Class c = [Person class];//通过类获取

    41 类名就代表类对象。

    42 +(void)load;// 当程序启动时会加载一次项目中所有的类以及分类,类加载完毕后就会调用此方法,先加载父类在加载子类。

    43 +(void) initialize; // 第一次使用这个类的时候,就会调用一次此方法。先初始化父类在初始化子类。分类是最后加载的。

    44 description方法,在NSLog里,打印对象的时候,系统会先去调用-description方法,将返回值(NSString*)显示到屏幕上。不要在description方法里使用NSLog方法会引发死循环。打印类的时候,先去调用+description方法,原理同上。

    45 NSLog输出C语言字符串的时候,不能有中文,应该使用printf。

    46 __func__输出当前函数名%s,__FILE__输出源文件绝对路径%s-(printf),__LINE__输出当前行号%d

    47 调用对象的方法还有一种方式perfromSelctor:(SEL) withObject:(id) //SEL是方法名,id是给该方法传参数

    48 NSSelectFromString返回SEL,把一个字符串转换成方法名

    49 NSStringFromSelector 返回字符串,把一个方法名转换成字符串

    50 每一个对象方法里面都有一个(SEL)_cmd代表当前方法,可以通过转换成字符串打印证明。

    51 SEL是对方法的一种包装,讲方法包装成一个SEL类型的数据,去找对应的方法地址,找到方法地址就可以调用方法。

    52 ARC的判断准则:只要没有强指针指向对象,就会释放对象

    指针分2种,强指针,弱指针。默认所有对象都是强指针

    Assign用在基本数据类型,适用于非OC对象

    Strong,weak适用于OC对象

    53 把老项目MRC转换成ARC方法:edit->refactor->convert to ARC…

    54 在ARC环境下,如果某些文件不想使用ARC就在build phases中把这些文件双击后写入-fno-objc-arc改为MRC,反之写入-f-objc-arc

    55 当两端循环引用的时候一端用weak,一端用strong

    PS:摘自李明杰视频教程,非常感谢李老师详细的讲解!

  • 相关阅读:
    hibernate_0100_HelloWorld
    MYSQL子查询的五种形式
    JSF是什么?它与Struts是什么关系?
    nop指令的作用
    htmlparser实现从网页上抓取数据(收集)
    The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the
    FCKeditor 在JSP上的完全安装
    Java遍历文件夹的2种方法
    充电电池和充电时间说明
    吃知了有什么好处
  • 原文地址:https://www.cnblogs.com/yangmx/p/3565756.html
Copyright © 2020-2023  润新知