您的位置:首页 > 其它

FOUNDATION的基本介绍

2016-01-06 22:01 183 查看
FOUNDATION简介
foundation 单词的解释就是基础
 乔帮主 离开苹果以后, 开创了 NeXT
-> 一套用来开发的类库

 Foundation 库是基础, 是关注基本数据类型和基本类的使用的库

 主要学习: 字符串处理, 数组处理, 键值对处理, …

11-字符串的常见用法
字符串操作类有两个: NSString(不可变字符串), NSMutableString(可变字符串)。
1, 掌握一个规律, 将常用的方法分类: 增删改查与其他
2, 如果有的方法有多种情况, 我们首先学习最简单的, 使用熟练后在考虑复杂的
 NSString 是不可变字符串, 主要讨论 增加 和 查询与其他

 增加(创建方法)
 1, 字面量         2, 构造方法      3, 快速创建对象方法

URL 统一资源地址, 就是网址
查询类的方法
1, 比较
      isEqualToString

      compare
strcmp("1", "2"); // 如果 > 返回 大于0的数; 如果 == 返回 0; 如果 < 返回小于0的数

01-字符串检查前后缀方法

所谓的检查前后缀, 就是判断字符串是以什么开头或者以什么结尾
关键字: has

hasPrefix 判断前缀       hasSuffix 判断后缀的

终端命令:
ls 列出当前目录下的所有内容     cd 切换目录   clear  清除终端   touch 是修改文件的属性的命令,如果文件不存在,则创建文件
open 打开文件  cp 复制文件

NSRange 用来专门表示范围
 range.location  表示位置  即 起始位置  
range.length   表示长度, 即 多少个字符

字符串的查找方法:
 字符串的查找方法是指从一个字符串中找某一个部分的方法 关键字 rangeOf  

如果没有找到, 就会返回 location 为一个非常大的数字, length 为 0
 这个非常大的数字在 OC 中被定义为 NSNotFound

字符串截取

字符串截取就是在一个字符串中, 将符合要求的一部分字符串取出来

 关键字 substring
在 科学计算中 表示范围的时候, 一般左边取得到, 右边取不到

字符串的替换
将一个字符串中的某一个部分替换成需要的样子

   关键字 stringBy + replace

字符串与基本数据的转换:  字符串提供了一系列的 "类型Value” 方法

去除首尾空格:去除首尾空格
   关键字 stringBy + trimming

NSMutableString简介

对于 可变字符串 使用最多的就是创建字符串和构造字符串

也就是说, 追加与插入使用的比较多. 一般都是使用 NSString

使用可变的字符串, 其目的就是为了构造动态的字符串
   因此使用的时候, 都是首先创建一个 空的字符串, 作为容器

   然后根据需要构造相应的字符串
1, 加入字符串           appendString        appendFormat

NSArray的基本使用

数组的概念
1, C 语言的数组不方便存储对象
2, C 语言数组不是面向对象的, 缺少强大的方法

3, C 语言的数组是定长的数组, OC 中提供了可变长度的数组

NSArray  不可变数组
NSMutableArray   可变数组

数组的常用方法    1, count 属性, 用来活动数组中元素的个数 NSLog(@"%lu", arr.count);

2, objectAtIndex 方法  
      NSString *s = [arr objectAtIndex:1];
       NSLog(@"%@", s);
3, 遍历
        // for (int i = 0; i < arr.count; i++) {
        //      NSString *s = [arr objectAtIndex:i];
        //      NSLog(@"%@", s);

        // }

在数组中还提供了快速获得首尾元素的属性 :arr.firstObject // 最开始的元素
                                arr.lastObject  // 最后的元素

     数组提供了一个方法, IndexOfObject 表示对象的索引

数组的遍历:除了可以使用 for 循环来遍历数组外,可以使用for-in循环和 block 来进行遍历
语法:  for
(临时变量 in 数组)
{
            使用临时变量访问结果
        }
语法  [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)
{

obj 表示当前循环的临时变量, 与 for-in 中的临时变量的含义相同
             idx 当前下标, 好比 for 循环中的 i
             stop 表示是否停止, 与 break 相同

字符串与数组的连用

NSMutableArray
使用可变数组基本上就是为了实现动态的生成数组

        一般就是生成一个空的数组, 然后的将元素一个个加入进来

键值对数据的概念与意义
键值对
 1, 为什么需要这个数据类型. 数组可以存储数据, 但是查找比较费劲
 2, 是什么类型
      键值对是一个"散列表(哈希表, hash)". 他的特点就是按照键来存储数据
      系统中在存储数据的时候, 都是按照键和值一起存储的
      首先根据键算出一个唯一的地址来. 然后将数据存储到该地址处

    那么很容易根据键九算出地址取出数据. 因此在查找技术中常常使用该方法
可变键值对
一般来讲, 可变键值对也是创建一个空的作为容器使用
NSMutableDictionary *dic1 = [[NSMutableDictionary alloc] init];

 NSMutableDictionary *dic2 = [NSMutableDictionary dictionary];

NSFileManager
该类完成对文件的基本信息的访问与基本操作, 保存创建, 删除, 移动, 复制

1, 该类为一个单例类
  创建的时候使用 defaultManager 类方法来获得对象

常见的结构体 
NSPoint 和 CGPoint(ios一般用这个)

NSNumber与NSValue

NSDate
NSDateFormatter 是一个格式化日期与字符串的类

    他可以轻松的实现字符串与时间对象的互相转换, 并且可以格式化任意的输入形式

集合的内存管理
1. 对象别集合引用后,所有者就会 +1    2.集合被释放后,会将引用的所有对象都 —1

copy概念的引入
系统中 NSObject 提供了 copy 的方法(mutableCopy)
        // 该方法用来复制当前对象, 创建一个新的副本
        
        // 但是该方法如何创建是未定义的, 它调用了 copyWithZone: 来具体实现如何创建
        
        // 如果我们需要自己创建副本, 就需要实现该方法
        

        // 而该方法由 NSCopying 来提供

深拷贝与浅拷贝 
第一种观点      1 第一种观点
            1> 浅拷贝, 是指拷贝引用变量
             Person *p1 = [Person new];
             Person *p2 = p1;  // 浅拷贝
        
             2> 深拷贝, 就是连同对象数据一起全部拷贝
              Person *p3 = [Person new];
                p3.属性 = p1.属性;
第二种观点       2 第二种观点
         拷贝 就是要 复制
         如果对象中的属性都是值类型, 那么深拷贝与浅拷贝没有区别
         如果对象属性含有类类型的, 那么深拷贝与浅拷贝才有区别
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  foundation