黑马程序员 日记(十)
2015-07-30 15:55
549 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
——-
黑马程序员 日记(十)
Foundation框架简单介绍
框架的概念和应用介绍
框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以
使研发程序变得更容易。在OS X系统下有100多个框架,这些框架可以用
来开发应用程序,处理Mac的Address Book结构、刻录CD、播放DVD、
使用QuickTime播放电影、歌曲等等。
为所有程序开发奠定基础的框架成为Foundation框架。该框架允许使用一
些基本对象,如数字和字符串,以及一些对象集合,如数组、字典和集合。
其他功能包括处理日期和时间、自动化的内存管理、处理基础文件系统、存
储(或归档)对象、处理几何数据结构(如点和长方形)。
Foundation框架包括大量的类、方法和函数。在OS X下,大约有125个可
用头文件,可以通过一种简单的形式导入,语句如下
<span style="font-size:18px;">#import<Foundation/Foundation.h>
</span>
即导入了Foundation所有的头文件,所以不必担心是否导入了正确的头文件。
且不必预编译的头文件可以避免额外的时间开销。
一.NSMutableString:
NSMutableString是NSString的子类,相当于是一个字符串链表可以动态的在字符串中
添加字符串、删除字符串、插入字符串等,能够较为灵活的操纵字符串。另外,NSString
中的方法NSMutableString都可以使用。
1、NSMutableString与NSString的区别:
1> NSString是不可变字符串(即占用的存储空间固定,里面的内容不能进行修改),里
面的内容不可进行修改;
2> NSMutableString是可变的(占用的存储空间不固定,可以动态变化,里面的内容可
以修改),里面的内容可以根据需要随时进行修改;
2、常用方法:
1> NSMutableString的创建、字符串拼接
[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[]) {
//定义一个NSMutableString
NSMutableString *s1 = [NSMutableString
string];
//从字符串末添加一个字符串
[s1 appendString:@"这是一个可变字符串!"];
NSUInteger a = s1.length;
//凭借一段格式化字符串到字符串末
[s1
appendFormat:@"有%ld个字符。",
a];
NSLog(@"%@",s1);
return 0;
}
2>
删除字符串中的指定字符串、或指定位置的字符串、在指定位置插入字符串、替换字符
串中的某段字符串[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[])
{
//定义一个NSMutableString
NSMutableString *s1 = [NSMutableString
string];
//从字符串末添加一个字符串
[s1 appendString:@"这是一个可变字符串!"];
//删除可变字符串中“字符串!”这个子字符串,通常搭配rangeOfString使用
NSRange range = [s1
rangeOfString:@"字符串!"];
[s1 deleteCharactersInRange:range];
//在指定位置插入字符串
[s1 insertString:@"字符串!"
atIndex:6];
//替换字符串中的指定字符串
[s1 replaceCharactersInRange:NSMakeRange(0,
2) withString:@"这就是"];
NSLog(@"%@",s1);
return 0;
}
3、注意事项
1>
使用NSMutableString *s1 =
@"";这种形式创建的还是不可变的字符串;
2> .string可以修改字符串的内容,并将源对象的所有字符串覆盖掉;
二、NSArray
NSArray是OC中的数组类,其中只能存放OC对象,并且是有顺序的,不能存放非OC对象
(如int/float/struct等基本数据类型),NSArray是不可变的,一旦初始化完毕其
中的内容就永远是固定的,不能添加也不能删除里面的元素。
1、常用方法:
1>
创建数组、取出数组中特定元素
[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[])
{
NSArray *arr1 = [NSArray
arrayWithObje
13080
ct:@"jack"];
NSArray *arr2 = [NSArray arrayWithObjects:@"jim",
@"rose", nil
nil];
//编译器特性,快速创建数组
NSArray *arr3 =
@[@"jack",
@"jim", @"rose"];
//获取array中元素的个数
NSInteger a = [arr3
count];
NSInteger b = arr3.count;
//取出数组中特定元素
NSString *str1 = [arr2
objectAtIndex:1];
NSString *str2 = arr2[1];
return 0;
}
2>
数组的遍历
[objc] view plaincopy
<pre name="code" class="objc">
//使用for循环调用
for (int i =
0; i < arr2.count; i++)
{
NSLog(@"%@", arr2[i]);
}
//增强型for循环调用
for (NSString *p
in arr2) {
NSLog(@"%@", p);
}
//使用block遍历
[arr3 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOLBOOL *stop)
{
NSLog(@"idx=%ld, obj=%@", idx, obj);
if (idx == 1) {
*stop =
YES;
}
}];
2、注意事项:
1> NSArray直接使用NSLog打印的时候是小括号括起来的形式;
2> NSArray中不能存基本数据类型,也不能存储nil,会将nil视为数组的结束;
三、NSMutableArray
NSMutableArray是可变数组,与NSstring与NSMutableString一样,主要用法
见下段代码:
[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[])
{
//创建NSMutableArray
NSMutableArray *array = [NSMutableArray
array];
NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"jim",
@"rose", nil
nil];
//向NSMutableArray中添加元素
[array
addObject:@"jack"];
//删除指定位置的元素
[array1 removeObjectsAtIndexes:[NSIndexSet
indexSetWithIndex:1]];
NSLog(@"%@",array1);
return 0;
}
四、NSSet与NSMutableSet
1、NSSet也是一种容器类,只能存放OC对象,但是与数组不同,NSSet是无序的,主
要用法如下:
[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[])
{
//初始化set
NSSet *set = [NSSet
setWithObjects:@"jack",
@"jim",@"rose",@"kate",nil];
//计算set中有几个元素
NSInteger a = set.count;
//随机取一个元素,因为set没有顺序
NSString *str = [set
anyObject];
NSLog(@"set对象有%ld个元素,随即取出一个是:%@",
a, str);
return 0;
}
2、NSMutableSet为可变set,主要用法如下:
[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[])
{
//创建一个NSMutableSet
NSMutableSet *set = [NSMutableSet setWithObjects:@"jack",
@"jim", nil
nil];
//添加一个元素
[set
addObject:@"rose"];
//移除一个元素
[set
removeObject:@"jim"];
NSLog(@"%@", set);
return 0;
}
五、NSDictionary和NSMutableDictionary
1、NSDictionary
1> NSDictionary类似于JAVA中的map类,存放的是键值对<key,
value>,主要使
用方法见下段代码:
[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[])
{
//创建一个NSDictionary对象
NSDictionary *dic = [NSDictionary
dictionaryWithObject:@"jack"
forKey:@"name"];
NSArray *keys = @[@"name",@"age"];
NSArray *objs = @[@"jack",@"20"];
NSDictionary *dic1 = [NSDictionary
dictionaryWithObjects:objs
forKeys:keys];
//编译器特性,快速创建NSDictionary
NSDictionary *dic2 =
@{@"name" :
@"jack", @"age" :
@"20"};
//取出key对应的value
id obj = [dic objectForKey:@"name"];
id obj1 = dic1[@"age"];
//取出dictionary中键值对的对数
NSInteger a = dic2.count;
return 0;
}
2>
遍历
[objc] view plaincopy
int main(int argc,
const charchar * argv[])
{
//创建一个可变dictionary
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
//添加一个元素
[dic setObject:@"jack" forKey:@"name"];
[dic setObject:@"beijing" forKey:@"address"];
//将dic中所有的key取出放到数组中
NSArray *arr = [dic allKeys];
//用for循环遍历
for (int i =
0; i < dic.count; i++) {
NSLog(@"key:%@, value:%@", arr[i], dic[arr[i]]);
}
//使用block遍历
[dic enumerateKeysAndObjectsUsingBlock:^(id key,
id obj, BOOLBOOL *stop) {
NSLog(@"key:%@, value:%@", key, obj);
}];
return 0;
}
2、NSMutableDictionary
NSMutableDictionary是可变的键值对集合类,主要使用方法如下:
[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[])
{
//创建一个可变dictionary
NSMutableDictionary *dic = [NSMutableDictionary
dictionary];
//添加一个元素
[dic setObject:@"jack"
forKey:@"name"];
//如果为同一个key设定不同元素,后面的会覆盖前面的
[dic setObject:@"jim"
forKey:@"name"];
//移除特定元素
[dic removeObjectForKey:@"name"];
return 0;
}
——-
黑马程序员 日记(十)
Foundation框架简单介绍
框架的概念和应用介绍
框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以
使研发程序变得更容易。在OS X系统下有100多个框架,这些框架可以用
来开发应用程序,处理Mac的Address Book结构、刻录CD、播放DVD、
使用QuickTime播放电影、歌曲等等。
为所有程序开发奠定基础的框架成为Foundation框架。该框架允许使用一
些基本对象,如数字和字符串,以及一些对象集合,如数组、字典和集合。
其他功能包括处理日期和时间、自动化的内存管理、处理基础文件系统、存
储(或归档)对象、处理几何数据结构(如点和长方形)。
Foundation框架包括大量的类、方法和函数。在OS X下,大约有125个可
用头文件,可以通过一种简单的形式导入,语句如下
<span style="font-size:18px;">#import<Foundation/Foundation.h>
</span>
即导入了Foundation所有的头文件,所以不必担心是否导入了正确的头文件。
且不必预编译的头文件可以避免额外的时间开销。
一.NSMutableString:
NSMutableString是NSString的子类,相当于是一个字符串链表可以动态的在字符串中
添加字符串、删除字符串、插入字符串等,能够较为灵活的操纵字符串。另外,NSString
中的方法NSMutableString都可以使用。
1、NSMutableString与NSString的区别:
1> NSString是不可变字符串(即占用的存储空间固定,里面的内容不能进行修改),里
面的内容不可进行修改;
2> NSMutableString是可变的(占用的存储空间不固定,可以动态变化,里面的内容可
以修改),里面的内容可以根据需要随时进行修改;
2、常用方法:
1> NSMutableString的创建、字符串拼接
[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[]) {
//定义一个NSMutableString
NSMutableString *s1 = [NSMutableString
string];
//从字符串末添加一个字符串
[s1 appendString:@"这是一个可变字符串!"];
NSUInteger a = s1.length;
//凭借一段格式化字符串到字符串末
[s1
appendFormat:@"有%ld个字符。",
a];
NSLog(@"%@",s1);
return 0;
}
2>
删除字符串中的指定字符串、或指定位置的字符串、在指定位置插入字符串、替换字符
串中的某段字符串[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[])
{
//定义一个NSMutableString
NSMutableString *s1 = [NSMutableString
string];
//从字符串末添加一个字符串
[s1 appendString:@"这是一个可变字符串!"];
//删除可变字符串中“字符串!”这个子字符串,通常搭配rangeOfString使用
NSRange range = [s1
rangeOfString:@"字符串!"];
[s1 deleteCharactersInRange:range];
//在指定位置插入字符串
[s1 insertString:@"字符串!"
atIndex:6];
//替换字符串中的指定字符串
[s1 replaceCharactersInRange:NSMakeRange(0,
2) withString:@"这就是"];
NSLog(@"%@",s1);
return 0;
}
3、注意事项
1>
使用NSMutableString *s1 =
@"";这种形式创建的还是不可变的字符串;
2> .string可以修改字符串的内容,并将源对象的所有字符串覆盖掉;
二、NSArray
NSArray是OC中的数组类,其中只能存放OC对象,并且是有顺序的,不能存放非OC对象
(如int/float/struct等基本数据类型),NSArray是不可变的,一旦初始化完毕其
中的内容就永远是固定的,不能添加也不能删除里面的元素。
1、常用方法:
1>
创建数组、取出数组中特定元素
[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[])
{
NSArray *arr1 = [NSArray
arrayWithObje
13080
ct:@"jack"];
NSArray *arr2 = [NSArray arrayWithObjects:@"jim",
@"rose", nil
nil];
//编译器特性,快速创建数组
NSArray *arr3 =
@[@"jack",
@"jim", @"rose"];
//获取array中元素的个数
NSInteger a = [arr3
count];
NSInteger b = arr3.count;
//取出数组中特定元素
NSString *str1 = [arr2
objectAtIndex:1];
NSString *str2 = arr2[1];
return 0;
}
2>
数组的遍历
[objc] view plaincopy
<pre name="code" class="objc">
//使用for循环调用
for (int i =
0; i < arr2.count; i++)
{
NSLog(@"%@", arr2[i]);
}
//增强型for循环调用
for (NSString *p
in arr2) {
NSLog(@"%@", p);
}
//使用block遍历
[arr3 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOLBOOL *stop)
{
NSLog(@"idx=%ld, obj=%@", idx, obj);
if (idx == 1) {
*stop =
YES;
}
}];
2、注意事项:
1> NSArray直接使用NSLog打印的时候是小括号括起来的形式;
2> NSArray中不能存基本数据类型,也不能存储nil,会将nil视为数组的结束;
三、NSMutableArray
NSMutableArray是可变数组,与NSstring与NSMutableString一样,主要用法
见下段代码:
[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[])
{
//创建NSMutableArray
NSMutableArray *array = [NSMutableArray
array];
NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"jim",
@"rose", nil
nil];
//向NSMutableArray中添加元素
[array
addObject:@"jack"];
//删除指定位置的元素
[array1 removeObjectsAtIndexes:[NSIndexSet
indexSetWithIndex:1]];
NSLog(@"%@",array1);
return 0;
}
四、NSSet与NSMutableSet
1、NSSet也是一种容器类,只能存放OC对象,但是与数组不同,NSSet是无序的,主
要用法如下:
[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[])
{
//初始化set
NSSet *set = [NSSet
setWithObjects:@"jack",
@"jim",@"rose",@"kate",nil];
//计算set中有几个元素
NSInteger a = set.count;
//随机取一个元素,因为set没有顺序
NSString *str = [set
anyObject];
NSLog(@"set对象有%ld个元素,随即取出一个是:%@",
a, str);
return 0;
}
2、NSMutableSet为可变set,主要用法如下:
[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[])
{
//创建一个NSMutableSet
NSMutableSet *set = [NSMutableSet setWithObjects:@"jack",
@"jim", nil
nil];
//添加一个元素
[set
addObject:@"rose"];
//移除一个元素
[set
removeObject:@"jim"];
NSLog(@"%@", set);
return 0;
}
五、NSDictionary和NSMutableDictionary
1、NSDictionary
1> NSDictionary类似于JAVA中的map类,存放的是键值对<key,
value>,主要使
用方法见下段代码:
[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[])
{
//创建一个NSDictionary对象
NSDictionary *dic = [NSDictionary
dictionaryWithObject:@"jack"
forKey:@"name"];
NSArray *keys = @[@"name",@"age"];
NSArray *objs = @[@"jack",@"20"];
NSDictionary *dic1 = [NSDictionary
dictionaryWithObjects:objs
forKeys:keys];
//编译器特性,快速创建NSDictionary
NSDictionary *dic2 =
@{@"name" :
@"jack", @"age" :
@"20"};
//取出key对应的value
id obj = [dic objectForKey:@"name"];
id obj1 = dic1[@"age"];
//取出dictionary中键值对的对数
NSInteger a = dic2.count;
return 0;
}
2>
遍历
[objc] view plaincopy
int main(int argc,
const charchar * argv[])
{
//创建一个可变dictionary
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
//添加一个元素
[dic setObject:@"jack" forKey:@"name"];
[dic setObject:@"beijing" forKey:@"address"];
//将dic中所有的key取出放到数组中
NSArray *arr = [dic allKeys];
//用for循环遍历
for (int i =
0; i < dic.count; i++) {
NSLog(@"key:%@, value:%@", arr[i], dic[arr[i]]);
}
//使用block遍历
[dic enumerateKeysAndObjectsUsingBlock:^(id key,
id obj, BOOLBOOL *stop) {
NSLog(@"key:%@, value:%@", key, obj);
}];
return 0;
}
2、NSMutableDictionary
NSMutableDictionary是可变的键值对集合类,主要使用方法如下:
[objc] view plaincopy
#import <Foundation/Foundation.h>
int main(int argc,
const charchar * argv[])
{
//创建一个可变dictionary
NSMutableDictionary *dic = [NSMutableDictionary
dictionary];
//添加一个元素
[dic setObject:@"jack"
forKey:@"name"];
//如果为同一个key设定不同元素,后面的会覆盖前面的
[dic setObject:@"jim"
forKey:@"name"];
//移除特定元素
[dic removeObjectForKey:@"name"];
return 0;
}
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- iOS开发之路--微博OAuth授权_取得用户授权的accessToken
- ios通过按钮点击异步加载图片
- ios中图像进行压缩方法汇总
- IOS检测指定路径的文件是否存在
- iOS、Mac OS X系统中编程实现汉字转拼音的方法(超级简单)