OC4

#import <Foundation/Foundation.h>
#import "Human.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 属性自动生成setter、getter方法
Human *human = [[Human alloc]init];
human.name = @"nishabi";
human.age = 28;//存

// NSInteger newAge = human.age; //取
NSLog(@"age= %ld",human.age);
NSLog(@"%@",human);

/*copy 只遵守了<NSCopying>的类才可以使用copy */
// 地址相同
NSString *str = @"hello";
id object = [str copy];
NSLog(@"copy= %@",object);
NSLog(@"str = %p object= %p",str,object);//打印地址 拷贝的是地址
// copy浅赋值:指针赋值

// 地址不同
NSMutableString *string = [[NSMutableString alloc]initWithFormat:@"world"];
id object1 = [string copy];

NSLog(@"string = %p object1= %p",string,object1);//打印内容,拷贝的是内容
// copy深赋值:内容赋值,复制后产生新的对象
// copy后返回的对象都是不可变的对象

/*mutableCopy*/
NSString *string1 = [[NSString alloc]initWithFormat:@"hello"];
id object2 = [string1 mutableCopy];
NSLog(@"object2= %@",object2);
NSLog(@"object2= %p string1= %p",object2,string1);

NSMutableString *mutableString = [[NSMutableString alloc]initWithFormat:@"word"];
id object3 = [mutableString mutableCopy];
[object3 insertString:@"u" atIndex:2];
NSLog(@"object3= %@",object3);
NSLog(@"object3= %p mutableString= %p",object3,mutableString);
// mutableCopy对于可变对象或者不可变对象都是深复制, 返回类型是可变的

}
return 0;

}

创建 Cocoa Touch Class文件  类名Human

.h

#import <Foundation/Foundation.h>

@interface Human : NSObject

@property(nonatomic,readwrite)NSString *name;
@property(nonatomic,assign)NSInteger age;
@end
/*
 第一类:线程有关
 nonatomic:非原子性,与线程无关,速度较快,通常用于单线程
 atomic(系统默认):原子性,与线程有关,通常用于多线程
 
 第二类:内存管理有关
 strong:强引用  =retain
 weak:弱引用    =assign
 
 retain:修饰的对象类型  需要内存管理
 assign:基本数据类型  无需内存管理
 copy:修饰对象类型 ,推荐NSString  类型使用copy修饰
 
 第三类:setter getter
 readonly:只读,只能调用我的getter方法取值
 readwrite(默认):setter、getter方法都能使用
 getter= :给getter方法重写命名,一般使用在bool类型
 
 第四类:可空类型
 nonnull:属性值不能为nil
 nullable(默认):属性值可以为空
 */
/*
 ios5之前
 1、声明下划线成员变量
 2、声明属性
 3、属性名和成员变量名关联(@synthesize)
 
 ios5之后
 1、自动生成下划线成员变量
 2、自动生成setter getter的方法声明和实现
 3、无需使用将属性(@synthesize)和成员变量名进行关联
 
 如果手动实习了setter getter方法中的某一个,系统会自动将另外一个方法配齐
 如果手动实习了setter getter,需添加@synthesize name = _name
 */

.m

#import "Human.h"

@implementation Human

//无需声明和手动调用
- (NSString *)description
{
    return [NSString stringWithFormat:@"name= %@ age= %ld", _name,_age];
}
@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值