暑期留校iOS学习笔记

8.12

nssting  是oc的类 每个字符串 则是这个类的对象  字符串对象的创建方法有两个

1  nssting *str =@“hello word ”这里表示 把hello word的地址赋给 str(地址)

2 nssting *str2=[nssring alloc ] initwithstring :str]; 用一个对象 创建另一个对象

3使用c的字符串创建对象

4stingwithformat 使用格式符 拼接成一个字符串 

注意 ⚠ 利用2,3,4  alloc 创建的对象需要用 release 进行释放

1  nstring *str = [nstring stringwithuft8stirng:”hello word” ];

2  nstring *str = [nstring stringwithformat:@”hello word”,1 ];

3  nstring *str = [nstring stringwithstirng:”str” ];

以上三个是自动释放的 不需要写release 

以上7种创建方式 都不能再修改 

 

比较俩字符串是否相等 bool(返回值是bool类型) ret =[str isqualtostring:str2]

nslog(@“ %d”,ret)    ret 为yes(1) 相等 ret 为 no (0)不相等 

 

比较大小(返回值)nscommparisionresult ret =[str compare:str2];

如果str <str2  ret==nsorderedascending(-1)

如果str =str2  ret==nsorderedsame(0)

如果str >str2  ret==nsordereddescending(1)

 

nsrange

nsstring *str=@“i am a so bad man ”;

nsstring *substr=@“so”;

nsrang range=[str rangofstring:substr]

查找substr 是 str 中的位置在

然后通过range.location  和 range.length

位置 长度 调用查看

 

nssting *str =@“123456789”;

nssting *str2=[str substingtoindex:6];

从str 提取 一部分作为子字符串(原字符串不变,创建新的字符串)  以上就表示 从str中提取从头至第六个字符串(不包括第六个),生成新的字符串,返回字符串地址(注意是开区间)

 

nssting *str2=[str substingfromindex:6];

这个表示从str中从第六个(包括第六个)到最后一个字符生成新字符串,返回字符串地址闭区间

 

nsrange  range ={3,4} ; 表示从第三个(位置)开始,(长度)有四个  (创建range)

nsstring *str4 =[str substrinngwithrange : range];

//这段表示 从str字符串的第三个开始截取长度为为四 作为新的字符串

//也可以 nsstring *str4 =[str substrinngwithrange : nsmakerange(3,4)];

以上均为 不可变的字符串自创建完后

 

可变字符串 nsmutalestring (增删改查)

 nsmutablestring *str =[nsmutablestring alloc] init]; 创建空的字符串

然后 进行增加内容  [str setstring:@“hello”];

如果再来一次 [str setstring:@“world”];  就会替换掉原来的 

增:

可以进行追加

[str append string:@”123”]; 这是在 上面原有字符串的基础上world 进行追加123string类型,也可以[str append format:@“%c”,’a’]; 追加字符 可以追加很多类型

可以进行插入

[str insertstring:@“@@@”atindex:4]表示插入三个@在第四个位置开始插入

[str deletecharactersinrange:namakerang(3,5)];

表示从第三个开始 删除5个字符串(0123从0开始数)

改(替换)

[str replacecharactersinrange : nsmakerange(3,2)withstring@“*****************”];

把从第三个开始长度为2的字符串替换为***********

 

nsarray 数组  不可变数组

可变数组 mutablearray

 数组的创建

nsarray *array=[[nsarray alloc] initwithobject:@“one”,@“two”,@“three”,nil]

数组的对象可以是任意的对象 数组中装的是元素的地址

打印数组就是打印数组的每一个元素    同理 打印对象就是打印对象的返回值 nslog(@“%@”,dog);数组也可以用%@打印 当打印的数组 不是一个单词时 就会加上双引号 “one one”

打印方法有

1枚举器法 

nsenumerator * enumerator=[array objectenumerator];

id obj;

while()

2快速枚举法

 

for (id obj in array){

nslog(@“%@”,obj);

}

3使用i之遍历

nsuinteger  length =[array count];

上诉是返回数组的元素个数

obj(对象)=[array objectatindex:2];

返回单个元素的地址 返回第二个元素的地址

也可以声明一个可变数组nsmutablearray *arry=[nsmutablearray alloc]init];

增加元素

[array add object:@“one”];

删除元素

[array remove object:@“one”];

如果一个程序里例如  @“one”   @“one”两个字符串完全相同那吗所在的地址一样

指定第几个字符串的删除 [array removeobjectindex:1];⚠ 从零开始数

交换两个数组元素  [array exchangeobjectindex:0  withobjectindex:1];

使用枚举器法在正序遍历的时候不准许进行数组的修改,逆序就可以。

进行数组的 逆序输出,

例如 : 声明了一个字符串  nsstring *str =@“i am a bad man”;是以空格隔开的

然后利用 nsarray *array=[str componentseparatedbystring:@“ ”];以空格为单位  分为 每一个个元素,此时打印数组的话就会得到 i am  a bad man 此时的数组不可变

连接数组中的每个元素连接也可以 ,用

nsstring *str =[array componentsjoinedbystring:@“ 空格”];每个元素中连接元为空格 

 

category 能把一个类的实现分文若干个不同的文件中

每个category是类的一部分

类的不同类别可以单独编译(可以让不同的开发者负责一个category)

使用方便但是写起来比继承要复杂

如果把一个类category(申明与实现)放到一个.m文件中那么该category外界不能访问,这样实现了类似c++中的class的private

category实际上就是对类的拓展

category 的缺点可以团战函数消息不能拓展字段变量

命名规则

要拓展类名+拓展变量.[h/m]

比如

nsstring+reversestring.h

nsstring+reversestring.m

集合 nsset与nsarray 都是存的地址 nsset 存的  无序  是通过哈希表 散列算法查找其中的元素的 

 想要获取集合中的元素 [set count]

 判断集合中是否拥有bool  set=[set contains object:@“two”]

判断俩个集合是否相等bool  set=[set isequalftoset:set2];

判断一个集合是否为另一个集合的子集bool  set=[set issubsetofset:set2];

可以取出数组中的元素创建一个集合 数组的创建 nsarray *array=[[nsarray alloc]

initwithobject:@“one”,nil]

posted @ 2015-08-23 10:15  Joe.Smith  阅读(120)  评论(0编辑  收藏  举报