对象的属性

来源:互联网 发布:大数据阅读答案 编辑:程序博客网 时间:2024/06/03 20:45

属性的声明:用@property (copy,nonatomic) NSString * name;

int等基本类型的用assign;对象类型的用retain。


使用属性:直接用点“.”调用。(若是成员变量用->调用)


@property可以帮助自动生成访问器。

@synthesize 组合属性,生成相应的访问器和成员变量。

@property NSString* name;//就相当于

-(void) setName:(NSString *)name; -(NSString*) name;


属性说明的作用:访问控制、线程安全、内存控制。使用访问器可以达到数据安全。

访问控制
readwrite 说明了属性是可读写的。
readonly 说明属性是只读的,也就是只会生成访问器

getter=函数名 为属性访问器指定函数

setter=函数名 为属性设置器指定函数 线程安全

nonatomic ⾮非原⼦子性,不保证多线程安全

atomic 原⼦子性,多线程访问时较安全 内存管理

copy 制作⼀一个值的副本,传⼊入到成员变量

assign 默认值,直接赋值,不关⼼心内存管理

retain 关⼼心内存管理

strong 新加⼊入的关键字


//使⽤用set访问器设置年龄

[stu setAge:-200];//stu->age = -200;


对象的使用

对象的定义: 1.内存分配 --为对象动态分配内存地址

                     2.初始化 -- 在内存中填上的初始值

Student * stu=[Student alloc]

说明:向类发送alloc消息,就是为该类分配一块 足够大内存,用于存放实例变量,同时初始化内 存

  int  

  float  

  BOOL  

  指针  

  0

    0

   NO

   nil

stu=[stu init];

初始化 -- 在内存中填上的初始值



自定义初始化:

-(id) initWithAge : (int ) age

          andName: (NSString *) name

{

     self=[super init];//调用父类的构造器

     if(self){

          self.age=age;

          self.name=name;

}

     return self;

}

Student *stu = [[Student alloc]  initWithAge : 1          andName:@"李四"];//初始化赋值


便利构造器:

+(id) studentWithAge : (int ) age      

                  andName: (NSString *) name

{

     Student *stu = [Student alloc]  initWithAge : 1          andName:@"李四"];

     return stu;

}

Student *stu = [Student studentWithAge : 1          andName:@"李四"];




self:代表指向当前实例对象的指针

super:代表指向父类对象的指针

原创粉丝点击