12-内存管理@property的参数

来源:互联网 发布:惊天动地影评知乎 编辑:程序博客网 时间:2024/06/14 10:16

//  main.m

//  @Property内存管理

//

//  Created by amesty on 15-1-8.

//  Copyright (c) 2015 itcast. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "Person.h"

#import"USer.h"

#import"Status.h"


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

{

    

    USer * user1=[[USer alloc]init];

    user1.name=@"2B";

    

    USer * user2=[[USer alloc]init];

    user2.name=@"12B";

    

    

    Status *s=[[Status alloc]init];

    s.text=@"今天天气真好";

    s.user=user1;

    

    Status *s2= [[Status alloc]init];

    s2.text=@"今天天气真的不错呀";

    s2.retweeStatus=s;

    s2.user=user2;

    

    

    [user1 release];

    [s2 release];

    [s release];

    return 0;

}


void test()

{


    Person * p= [[Person alloc]init];

    [p setWeight1:122];

    p.rich=YES;

    bool b=p.isRich;

    

    //        关于布尔类型:(Objective-c以下简称Oc

    //

    //        Oc风格BOOL 具有 YES  NO。实用8位存储空间。从最低位算起。 YES定义为1NO定义为0

    //

    //        c语言风格  bool 具有truefalse  而非0的全都是true0false

    //

    //        输出BOOL值的方法:NSLog(@"%@",YES?@"YES":@"NO");@输出字符串。

    

    

    NSLog(@"p的体重是%d",p.getWeight1);

    

    NSLog(@"%@有钱",YES?@"YES":@"NO");

    

    // insert code here...

    NSLog(@"Hello, World!");

}

=================



//

//  Person.h

//  @Property内存管理

//

//  Created by amesty on 15-1-8.

//  Copyright (c) 2015 itcast. All rights reserved.

//


#import <Foundation/Foundation.h>

/*

 1.set方法内存管理的相关参数

 retain:在set方法中,release旧值,retain新值(适用于oc对象类型)

 assign:默认赋值(适用于非oc对象类型)

 copyrelease旧值,copy新值

 

 2.是否要生成set方法

 

 readwrite:同时生成settergetter的声明实现、默认是readwrite,同时生成getset方法的声明

 readonly:只会生成getter的实现声明

 

 3.多线程管理

* noatomic: noatmic nonatomic代表方法不需要考虑线程安全问题

* atomic:  atomic就代表给方法进行加锁,保证线程安全

 

 4.settergetter方法

 setter:决定set方法的名称,一定要有一个冒号:

 getter:决定了get方法的名称(返回bool类型的方法一般用is开头)

 */


@interface Person : NSObject

//返回bool类型的方法一般用is开头

@property(getter=isRich)bool rich;

@property(getter=getWeight1,setter = setWeight1:) int weight;

@property (readonly,assign)int height;

@property (nonatomic,assign)int age;

@property(retain)NSString *name;

@end


==============

//

//  Person.m

//  @Property内存管理

//

//  Created by amesty on 15-1-8.

//  Copyright (c) 2015 itcast. All rights reserved.

//


#import "Person.h"


@implementation Person


@end

========


//

//  USer.h

//  @Property内存管理

//

//  Created by amesty on 15-1-8.

//  Copyright (c) 2015 itcast. All rights reserved.

//


#import <Foundation/Foundation.h>



typedef enum {

    SexMan, // 

    SexWoman // 

} Sex;



typedef struct {

    int year;

    int month;

    int day;

} Date;


// 微博内容、微博配图、发送时间、微博发送人、转发的微博、被评论数、被转发数


@interface USer : NSObject

@property (nonatomicretainNSString *name;


@property (nonatomicretainNSString *account;


@property (nonatomicretainNSString *password;


@property (nonatomicretainNSString *icon;


@property (nonatomicassignSex sex;


@property (nonatomicretainNSString *phone;


@property (nonatomicassignDate birthday;


@end

====================

//

//  USer.m

//  @Property内存管理

//

//  Created by amesty on 15-1-8.

//  Copyright (c) 2015 itcast. All rights reserved.

//


#import "USer.h"


@implementation USer


@end

==========

//

//  Status.h

//  @Property内存管理

//

//  Created by amesty on 15-1-8.

//  Copyright (c) 2015 itcast. All rights reserved.

//


#import <Foundation/Foundation.h>

#import"USer.h"

@interface Status : NSObject

// 微博内容、微博配图、发送时间、微博发送人、转发的微博、被评论数、被转发数

@property(nonatomic,retainNSString *text;

@property(nonatomic,retainNSString *icon;


//1970-01-01 000000开始一共度过了多少秒

@property(nonatomic,assignlong time;


@property(nonatomic,retain)USer *user;


@property(nonatomic,retain)Status *retweeStatus;


//reweet  转发

@property(nonatomic,assignint commentscount;

@property(nonatomic,assignint reweetscount;



@end

=================

//

//  Status.m

//  @Property内存管理

//

//  Created by amesty on 15-1-8.

//  Copyright (c) 2015 itcast. All rights reserved.

//


#import "Status.h"


@implementation Status

-(void)dealloc

{   [_text release];

    [_icon release];

    [_retweeStatus release];

    [_user release];

    [super dealloc];

}

@end

===================

























0 0
原创粉丝点击