【Objective_C】基础学习—字符串与集合家族

深拷贝和浅拷贝:
浅拷贝:浅拷贝就是对内存地址的复制,让目标对象指针和源对象指向同一片内存空间
深拷贝:深拷贝是指拷贝对象的具体内容,而内存地址是自主分配的,拷贝结束之后,两个对象虽然存的值是相同的,但是内存地址不一样,两个对象也互不影响,互不干涉。
retain:始终是浅复制。引用计数每次加一。返回对象是否可变与被复制的对象保持一致。
copy:对于可变对象为深复制,引用计数不改变;对于不可变对象是浅复制,引用计数每次加一。始终返回一个不可变对象。
mutableCopy:始终是深复制,引用计数不改变。始终返回一个可变对象。

结构体NSRange:
struct的几种定义方式:
1、struct myStruct{
int x,y,z;
};

2、struct myStruct{
int x,y,z;
}stru;//说明:已经定义了一个myStruct的实例变量stru。

3、typedef struct myStruct{
int x,y,z;
}; 或者
typedef struct {
int x,y,z;
}myStruct;

4、typedef struct _myStruct{
int x,y,z;
}mystruct;//说明:mystruct是myStruct的别名,在使用时可以省去struct
第1、2、3种定义方式都可以通过struct myStruct 定义myStruct的实例变量。第二种定义方式,已经存在实例变量stru,可以直接通过stru.x或者struc.y访问x、y。第四种定义方式,可以通过mystruct struct1定义实例变量
字符串:
(创建)stringWithFormat方法是通过格式字符串和参数来创建字符串
(大小)NSString的length返回的是字符串的字符个数,而strlen()返回的是只计算字节数的函数,可能会返回错误的数值。
(比较)NSString下面的compare函数的返回值是一个枚举类型NSComparisonResult;

返回值类型是枚举类型,若右侧的字符串中字母表中排序较左边靠后,如“aadrdv”和“zzgote”,则返回NSOederedAscending,否则返回NSOrderedDescending,相同返回NSOrderedSame

Enum{
NSOrderedAscending = -1,
NSOrderedSame, //相同
NSOrederedDscending
};
Type NSInteger NSComparisonResult;

比较两个字符串相等时用isEqualToString
==用来检查两个对象是否为同一个事物对象

NSCaseInsensitiveSearch:不区分大小写的字符串
NSListerlSearch:进行完全比较,区分大小写
NSNumricSearch:只比较字符串的个数,不比较数值

NSString为不可变类型,NSMutableString为可变类型,类似于java中的String和StringBuffer
NSMutableString可以用stringWithCapacity创建

+(id) stringWithCapacity:(NSInteger) capacity;

集合:
数组
NSArray是用来存储对象的有序列表,可以存放任意的对象,不能用来存储基本数据类型的值:int,float,struct,enum等
两个限制:只能存储Objective-C对象
不能存储nil值,因为Array数组会值列表结尾添加nil代表列表的结束
如:NSArray *array = [NSArray arrayWIthObjectives:@“one”,@“two”,nil];
NSArray *array2 = @[@“one”,@“two”];(字面量方式创建,等同array的创建)

NSString *str1 = @“hello:World:happy:everyday:!”;
使用componentsSeparatedByString函数,可以将字符串切分成NSString
NSArray *chunks = [str1 componentsSeparatedByString:@":"];
使用componentsJoinedByString函数来合并NSArray中的元素并创建字符串
str1 = [chunks componentsJoinedByString:@":–”];

NSArray为不可变类型,NSMutableArray为可变类型

NSMutableArray可以用arrayWithCapacity创建

+(id)arrayWithCapacity:(NSInteger) numItems;
枚举
可以利用枚举器NSEnumerator遍历数组
快速枚举:
for(NSString *string in chunks){
NSLog(@“I found %@”,string);
}
四种遍历方式:通过索引,使用NSEnumerator,使用快速枚举和最新的代码块
字典
NSDictionary是以键值对的方式存储数值,虽然是不可变类型,但可以直接随意添加的删除字典元素如: NSDictionary *numbers = [NSDictionary dictionaryWithObjectsAndKeys:
@“1”,@“one”,
@“2”,@“two”,
@“3”,@“three”,
nil];
或者用字面量的方式:
NSDictionary *number = @{@“one”:@“1”,@“two”:@“2",@“three”:@“3"};
若查询:
-(id)objectForkey:(id)key;或number[key];

NSNumber和NSValue
由于NSArray和NSDictionary只能存储OC对象,不能存储基本数据、struct。但有时我们需要存储时可以将其封装成对象用到NSValue,NSNumber是NSValue的子类。又称为装箱操作
装箱:把一个基本类型的数据封装成对象的过程。
开箱:从一个对象中提取出基本数据类型

NSNull
集合中不能存放nil值,因为nil在NSArray和NSDictionary中有特殊含义,但有时确实需要存储一个表示“空”的值,那么可以使用NSNull,它是NSObject的子类。只有这么一个方法。

  • (NSNull *)null
    NSNull *nl = [NSNull null];
    这样就可以将nl存入数组和字典中了。
    [NSNull null]总是返回一样的数值所以可以使用==将该值与其他值进行比较。
python023基于Python旅游景点推荐系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
JSP基于SSM网上医院预约挂号系统毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值