zoukankan      html  css  js  c++  java
  • 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:摘自李明杰视频教程,非常感谢李老师详细的讲解!

  • 相关阅读:
    js加载优化三
    js加载优化-二
    js加载优化
    怎样获取元素的高度
    HttpClient
    Android Http请求方法汇总
    table列等宽
    单页面手机开发
    单页面
    【154】C#打包程序成安装包
  • 原文地址:https://www.cnblogs.com/yangmx/p/3565756.html
Copyright © 2011-2022 走看看