黑马程序员- IOS学习笔记OC核心语法

来源:互联网 发布:淘宝客扣费方式 编辑:程序博客网 时间:2024/05/14 21:39

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


点语法
本质上相当于set和get方法
p.age = 10; 等价于[p setAge:10];

int a = p.age; 等价于 int a = [p age];
成员变量作用范围

成员变量的自动生成getter和setter方法
@property int age; // 自动创建私有成员变量_age,并对成员变量的setter和getter方法进行声明和实现。
@synthesize age = _age; // 可以省略

id
万能指针
- (id)init
{
    初始化方法;
}

构造方法
作用:进行成员变量的初始化。
应用:需要重写系统的init方法。
1、初始化父类的init方法
    self = [super init]; // 当前对象
2、对象初始化成功,才有必要进行接下来的成员变量进行初始化
    if (self != nil)
    {
        // 初始化成功
        _age = 10;
    }
3、返回一个已经初始化完毕的对象
    return self;

精简写法:
无参数:
- (id)init
{
    if ( self = [super init] )
    {
        _age = 10;
    }
   return self;

}

有参数:
- (id)initWithAge:(int)age
{
    if ( self = [super init] )
    {
        _age = age;
    }
   return self;

}


分类:
作用:在不改变父类的基础上为父类增加新的方法,便于团队协作。
语法
@interface Person (Teacher)
// 父类 (分类名称)
@end

@implementation Person (Teacher)

@end

类的深入研究
加载和初始化
/*
    1、当程序启动时,会加载项目中的所有类,类加载完毕后调用+load方法
    2、当第一次使用某个类时会调用当前类的+initialize方法
    3、先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法)
        先初始化父类,再初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法)
    4、分类的initialize方法会覆盖父类的initialize方法。
    - (NSString *)description 决定了实例对象的输出结果
    + (NSString *)description 决定了类的输出结果
 */
输出c语言字符串时不能有中文
__FILE___
__LINE__
__func__
// 默认输出<类名 对象地址>
NSLog(@"%@",p);

SEL
// 间接调用方法
// 无参数
[p performSelector@selector(方法名)];

// 有参数
[p performSelector:@selector() withObject:@"参数值"];
1、把方法包装成SEL类型的数据
2、根据SEL数据找到对应的方法地址
3、根据方法地址调用对应的方法

// 把test1包装成Sel类型
    [p performSelector:@selector(test1)];
   
    // 调用test2方法带参数,转换成SEL类型,注意方法名为test2:
    [p performSelector:@selector(test2:) withObject:@"SEL使用"];

- (void)test1
{
    //_cmd == @selector(test1); __cmd返回当前方法名
    NSString *name = NSStringFromSelector(_cmd);
    NSLog(@"调用了%@方法",name);
}
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
0 0
原创粉丝点击