Objective-C - @property参数

本文详细解析了Objective-C中@property关键字的参数使用,包括set方法的内存管理、是否生成setter/getter方法、多线程管理以及setter和getter方法的名称。通过实例展示了这些参数的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@property参数

/*
 1.set方法内存管理相关的参数
 * retain : release旧值,retain新值(适用于OC对象类型)
 * assign : 直接赋值(默认,适用于非OC对象类型)
 * copy   : release旧值,copy新值

 2.是否要生成set方法
 * readwrite : 同时生成setter和getter的声明、实现(默认)
 * readonly  : 只会生成getter的声明、实现

 3.多线程管理
 * nonatomic : 性能高 (一般就用这个)
 * atomic    : 性能低(默认)

 4.setter和getter方法的名称
 * setter : 决定了set方法的名称,一定要有个冒号 :
 * getter : 决定了get方法的名称(一般用在BOOL类型)
 */

@interface Person : NSObject


// 返回BOOL类型的方法名一般以is开头
@property (getter = isRich) BOOL rich;

//   
@property (nonatomic, assign, readwrite) int weight;
// setWeight:
// weight

// 
@property (readwrite, assign) int height;

@property (nonatomic, assign) int age;

@property (retain) NSString *name;
@end
@implementation Person

@end

Book类

@interface Book : NSObject

@end
@implementation Book

@end

Student类

#import "Book.h"

@interface Student : NSObject

@property (retain) Book *book;

@property (retain) NSString *name;

@end
@implementation Student


- (void)dealloc
{
    [_book release];
    [_name release];

    [super dealloc];
}

@end
int main()
{
    Book *b = [[Book alloc] init];
    Person *p = [[Person alloc] init];

    p.book = b;


    NSLog(@"%ld", [b retainCount]);


    [p release];
    [b release];
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值