OC语言学习08-属性约束

本文介绍了Objective-C中关于线程安全、内存管理及属性的相关概念。详细解释了nonatomic与atomic的区别,MRC与ARC环境下不同的引用方式,以及属性的读写特性。通过一个具体的Person类实例展示了不同属性修饰符的用法。

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

打开上一次工程目录


//1.线程安全相关(原子性)

//atomic(原子操作)默认 (会保证线程安全,但是会损失性能)

//nonatomic(非原子操作)

//》一般情况下,都是使用nonatomic,可以提高程序的执行效率

//2.内存管理相关

//MRC下,retain(强引用)、copy(强引用)、assign(弱引用、赋值、默认)

//ARC下,strong(强引用)、weak(弱引用)

//3.读写属性相关

//readwrite(同时生成 setter getter方法)(默认)

//readonly (只会生成getter方法)

//4.重命名相关

//setter方法重命名 方法名称后必须附带一个

//getter方法重命名


#import <Foundation/Foundation.h>


@interface Person : NSObject {

    NSString *_name;

    NSUInteger _age;

    NSMutableString *_sex;

}

@property(nonatomic, strong) NSString *name;

@property(nonatomic,assign) NSUInteger age;

@property(nonatomic,copy) NSMutableString *sex;


@end

main函数

#import <Foundation/Foundation.h>

#import "Person.h"

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

    @autoreleasepool {

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

        per.name = @"小名";

        per.age = 20;

        

        NSLog(@"name = %@ age = %li", per.name, per.age);

        //copystrong的使用区别

        NSMutableString *sex = [NSMutableString stringWithString:@""];

        per.sex = sex;

        NSLog(@"%p %p",per.sex, sex);

        //打印结果:0x1005000a0 0x100500220

    }

    return 0;

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值