A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ZXY66452 中级黑马   /  2015-12-1 14:33  /  953 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ZXY66452 于 2015-12-1 16:00 编辑

一、成员变量的作用域@public :在任何地方都能直接访问对象的成员变量
@private:只能在当前类的对象方法中访问
@protected(默认):能在当前类和子类的对象方法中直接访问
@package:只要处在同一个框架中,就能直接访问对象的成员变量
@interface和@implementation中不能声明同名的成员变量
在@implementation中声明变量,默认是@private的
二、点语法
  • 点语法的本质还是方法调用,不是调用成员变量
  • 编译器遇到点语法时,会把点语法转成方法

//@property int ID;
- (void) setId:(int)newId;
- (int)id;

//@synthesize ID;
- (void) setId:(int)newId
{
   _id = newId;
}
- (int)id
{
   return_id;
}
调用
dog.id =1;  //[dog setId];
NSLog(@"%d",dog.id); //[dog id];

三、构造方法
  • 用来初始化对象的方法,对象方法,以减号开头
  • 为了让对象创建出来,成员变量就会有一些固定的值
  • 重写构造方法的注意点:
    • 先调用父类的构造方法([super init])
    • 再进行子类内部成员变量的初始化
  • + alloc 方法
    • 分配存储空间
  • - init 方法
    • 初始化
  • 实际上是这么创建对象的
Person *p5 = [[Person alloc] init];   //先分配存储空间,再进行初始化
重写NSObject类的init方法(无参数)

- (id)init

        {

            //一定要调用回super得init方法:初始化父类中声明的一些成员变量和其他属性

           if (self = [super init]) {

               //初始化成功

                _age =10;   

            }

           returnself;

        }

       带参数的构造方法

        - (id)initWithName:(NSString *)name andAge:(int)age

        {

           if (self = [super init]) {

                _age = age;

                _name = name;   

            }

           returnself;   

        }

4 个回复

倒序浏览
笔记写的很细致,加油
回复 使用道具 举报
有用,谢谢
回复 使用道具 举报
总结的很好,很有用
回复 使用道具 举报
谢谢 分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马