黑马程序员-----常用语法

来源:互联网 发布:学足球软件 编辑:程序博客网 时间:2024/06/07 18:02
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

一、SEL
SEL其实就是对方法的一种包装,将方法包装成一个SEL类型的数据,去找对应的方法地址,找到方法地址就调用对应的方法。其实消息就是SEL。
1>一种数据类型,代表一个方法。一个SEL类型数据就代表一个方法。
2>使用方法
把方法包装成SEL类型的数据;
根据SEL数据找到对应的方法地址;
根据方法地址调用对应的方法;
3>创建SEL类型的数据
SEL s1 = @selector(方法名);
SEL s2 = NSSelectorFromString(NSString *aSelectorName);

4>两个方法
[p performSelector:SEL];
[p performSelector:SEL withObjcet:id];
5>_cmd
每个方法内部都会有一个_cmd代表当前方法,是一个SEL类型的数据
二、description方法
1、-description方法
使用NSLog和%@输出某个对象时,会调用对象的-description方法,并拿到返回值进行输出
2、+ description方法
使用NSLog和%@输出某个类对象时,会调用类对象+description方法,并拿到返回值进行输出
3、死循环陷阱
如果在-description方法中使用NSLog打印self

三、构造方法
1、作用
1>完整创建一个可用的对象两步
①分配存储空间 +alloc
②初始化 -init
2>初始化成员变量
2、构造方法名都是以initWith开头
3、重写-init方法
1>重写init方法必须首先调用父类的init方法,初始化父类中声明的成员变量和其他属性
if(self = [super init]),只有对象初始化成功,才有必要进行接下来的初始化
2>返回值是id,返回 一个初始化完毕的对象。
eg:intiWith:(int)age;
4、构造方法一定是对象方法。

四、成员变量作用域
五、特殊数据类型
1、id:万能指针,能指向/操作任何OC对象。写id的时候不要加*。
2、self:指向调用者,代表当前对象或类。
1>谁调用了当前方法,self就代表谁。self出现在对象方法中就代表对象;self出现在类方法中,就代表类。
2>可以利用"self->成员变量"访问当前对象内部的成员变量
3>[self 方法名]可以调用其他对象方法\类方法。
3、super:指向调用者父类或者父类对象。
1>直接调用父类的某个方法
2>super处在对象方法中,那么就调用父类的对象方法。
3>super处在类方法中,那么就会调用父类的类方法。
4>使用场合:子类重写父类方法的时候想保留父类的一些行为。

六、NSlog方法
1、NSlog方法输出增强
1>__FILE__:源代码文件名
2>__LINE__:NSlog代码在第几行
3>_cmd:代表着当前方法的SEL
1>重写:子类重新实现父类中的方法,覆盖父类以前的做法
2>注意
父类必须申明在子类前面
子类不能拥有和父类相同的成员变量
调用某个对象的方法时,优先去当前对象中找,如果找不到再去父类找
九、小零碎
1>- (void)description死循环
如果在-description方法中使用NSLog打印self就会进入死循环。
2>函数是不依赖于对象存在的。
3>OC特殊关键字
4>构造方法名都是以initWith开头,构造函数作用是初始化成员变量。
5>可以利用"self->成员变量"访问当前对象内部的成员变量

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com
0 0