`
JavaZhuang
  • 浏览: 9593 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

4.0OC6-self、自动释放、变量作用域

    博客分类:
  • IOS
 
阅读更多

4.0OC6-self、自动释放、变量作用域

 

方法的声明和实现,都可以以 +  或者 - 开头

+ 表示类的方法(静态方法)

- 表示对象方法(动态方法)

在.h中声明的所有方法都是public类型(通过Category可以实现private)

 

变量的作用域

@public全局都可以访问

@protected只能在类内部和子类中访问

@private只能在类内部访问

变量必须定义在类的{ } 中

 

 -----------main.m-------------

//

//  main.m

//  构造方法

//

//  Created by liuyes on 13-12-8.

//  Copyright (c) 2013 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

#import "Student.h"

 

int main(int argc, const char * argv[])

{

 

    @autoreleasepool {

        //char *s = "itcast";   C语言中字符串

        NSString *str = @"itcast"//OC中的字符串

        Student *stu = [[Student alloc] initWithAge:15 andNo:10];

        NSLog(@"%@", stu);  //%@表示打印的内存地址

        //NSLog(@"age is %i and no is %i", stu.age, stu.no);

        [stu release];

    }

    return 0;

}

 

 -----------Student.h-------------

//

//  Student.h

//  构造方法

//

//  Created by liuyes on 13-12-8.

//  Copyright (c) 2013 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

@interface Student : NSObject{

    int _age;

    int _no;

}

 

- (void)setAge:(int)age;

- (int)age;

 

 

 

- (void)setNo:(int)no;

- (int)no;

 

//自己写一个构造方法

- (id)initWithAge:(int)age andNo:(int)no;

 

    

@end

 

 -----------Student.m-------------

//

//  Student.m

//  构造方法

//

//  Created by liuyes on 13-12-8.

//  Copyright (c) 2013 renhe. All rights reserved.

//

 

#import "Student.h"

 

@implementation Student

- (void)setAge:(int)age{

    _age = age;

}

- (int)age{

    return _age;

}

 

- (void)setNo:(int)no{

    _no = no;

}

- (int)no{

    return  _no;

}

 

//实现构造方法

- (id)initWithAge:(int)age andNo:(int)no{

    //首先要调用super的构造方法

    self = [super init];

    

    //如果self不为nil

    if(self != nil){

        _age = age;

        _no = no;

    }

    return  self;

}

 

//重写父类的description方法

//当使用%@带打印一个对象的时候,回调用这个方法

-(NSString *)description{

    

    NSString *str = [NSStringstringWithFormat:@"age is %i, and no is %i", _age, _no];

    

    return str;

}

 

//如果直接把方法写在.m文件中,没有在.h文件中进行声明,那么这就是私有方法

 

//谁调用方法,self就指向谁

- (void)test{

    int age = self.age;

}

 

+ (void)test2{

    [Student alloc];

    [self alloc];

    //上面两句代码师等效的

}

 

 

@end

 

 -----------GoodStudent.h-------------

//

//  GoodStudent.h

//  构造方法

//

//  Copyright (c) 2013年 renhe. All rights reserved.

//

 

#import "Student.h"

 

@interface GoodStudent : Student

 

@end

 

 

 -----------GoodStudent.m-------------

//

//  GoodStudent.m

//  构造方法

//

//  Copyright (c) 2013年 renhe. All rights reserved.

//

 

#import "GoodStudent.h"

 

@implementation GoodStudent

 

//子类访问了父类的成员变量

- (void)test{

    _age = 10;

}

 

@end

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics