黑马程序员_gets()和scanf()

来源:互联网 发布:量化编程 编辑:程序博客网 时间:2024/05/18 01:13
一 . id是万能指针等于 NSObject *,能指向和操作任何OC对象


id d = [person new];


d.age=10;


二. 构造方法:用来初始化对象的方法,是个对象方法,-开头
    1.重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值
    2.重写构造方法的注意点
1>.先调用父类的构造方法([super init])
2>.再进行子类内部成员变量的初始化
    3.完整地创建一个可用的对象
1>.分配存储空间  +alloc
调用+alloc分配存储空间
Person *p1 = [Person alloc];
2>.初始化 -init
调用-init进行初始化
Person *p2 = [p1 init];  
调用-init进行初始化
Person *p3 = [Person new];
 重写-init方法
- (id)init
{
   1.一定要调用回super的init方法:初始化父类中声明的一些成员变量和其他属性
   self = [super init];当前对象 self
    2.如果对象初始化成功,才有必要进行接下来的初始化
   if (self !=nil)
    {初始化成功
       _age = 10;
    }
    
   3.返回一个已经初始化完毕的对象
    return self;
}
简化
- (id)init
{
   if ( self = [super init] )
    { //初始化成功
       _age = 10;
    }
    
   // 3.返回一个已经初始化完毕的对象
    return self;
}
经过初始化后,新创建对象的age属性就是10.
三. 自定义构造方法
 自定义构造方法的规范
 1.一定是对象方法,一定以 -开头
 2.返回值一般是id类型
 3.方法名一般以initWith开头
例:
- (id)initWithName:(NSString *)name;
- (id)initWithAge:(int)age;
- (id)initWithName:(NSString *)name andAge:(int)age;
- (id)initWithName:(NSString *)name
{


    if ( self = [super init] )
    {
        _name = name;
    }
    
    return self;
}


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


- (id)initWithName:(NSString *)name andAge:(int)age
{
    if ( self = [super init] )
    {
        _name = name;
        _age = age;
    }
    return self;
}
 如果父类中已经有方法实现,可以这样定义
// 父类的属性交给父类方法去处理,子类方法处理子类自己的属性
- (id)initWithName:(NSString *)name andAge:(int)age andNo:(int)no
{
    //将name、age传递到父类方法中进行初始化
   if ( self = [superinitWithName:name andAge:age])
    {
       _no = no;
    }
    
    return self;
0 0