Foundation框架: 1.常用结构体 - NSRange

前面我们已经把OC的语法学完了, 现在我们来进阶一下, 学习一些稍微深层次一点的东西, 这个就是Foundation框架啦, 框架是什么东西?其实框架就是把类型, 方法一系列东西综合在一起, 这个就叫做框架, 现在我们来看看Foundation框架里的常用结构体之一的NSRange.





讲解一下, 什么是NSRange, 其实NSRange是一个范围结构体, 可以用来对对象进行特定范围的操作, 比如:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    NSString *str = @"123456789";
    
    NSRange r1 = [str rangeOfString:@"9"];
    
    NSLog(@"location = %ld, length = %ld", r1.location, r1.length);
    
    return 0;
}

打印出来的结果:

2015-02-02 22:22:20.067 1.NSRange[11839:980348] location = 8, length = 1

这个结果是说字符@" 9 ", 在str字符串里是第8个位置, 长度是1.





NSRange的创建方法:

    1.NSRange ra = {2, 4}; //不用<pre name="code" class="objc">    
2.NSRange ra1 = {.location = 2, .length = 3}; //不用
    
3.NSRange ra2 = NSMakeRange(<#NSUInteger loc#>, <#NSUInteger len#>); //最常用


在实际开发里, 一般都是用第三个方法, 其他两个都不常用, 或者说几乎不用.

有些人肯定有疑问, 找到字符串里的位置和长度是很正常的, 因为字符串里面本身就有, 但如果字符串里面没有呢? 那么会怎么样? 下面让我们一起来看看:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    
    NSString *str = @"123456789";
    
    NSRange r1 = [str rangeOfString:@"0"];
    
    NSLog(@"location = %ld, length = %ld", r1.location, r1.length);
    
    return 0;
}

打印出来的结果:

2015-02-02 22:35:38.270 1.NSRange[11862:984557] location = 9223372036854775807, length = 0



解释一下,  为什么location会打印一大串东西, 而length是0呢?? 首先解释一下length, 因为在字符串里不存在该字符, 所以也就没有长度可言, 返回值肯定是0, 那么location呢, 为什么location就会返回一大串东西? 其实一旦NSRange找不到该字符的时候, 返回的是NSNotFound, 而NSNotFound就是-1, 由于NSNotFoundunsignedlong类型, 所以打印出来是这么一大堆的数字, 下面让我们来看看:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{    
    NSLog(@"%d ---- %lu", NSNotFound, NSNotFound);

    return 0;
}

打印出来的结果:

2015-02-02 22:45:45.497 1.NSRange[11947:987435] location = 9223372036854775807, length = 0
2015-02-02 22:45:45.499 1.NSRange[11947:987435] -1 ---- 9223372036854775807


让我们来看看NSRange里面元素是什么样的类型:

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;


NSUInteger 表示的是 unsignedlong类型.




好了, 这次我们就讲到这里, 下次我们继续~~

posted @ 2015-02-02 22:16  背着吉他去流浪  阅读(293)  评论(0编辑  收藏  举报