Obeject-C 结构体 NSRange NSPoint NSSize NSMakeRect

 
 

NSRange的定义

typedef struct _NSRange

{

  NSUInteger location;

  NSUInteger length;

} NSRange;

NSRange 是一个结构体,其中 location 是一个以 0 为开始的 index length 是表示对象的长度。他们都是 NSUInteger 类型。 NSRange的方法: NSEqualRanges()
NSIntersectionRange()
NSLocationInRange()
NSMakeRange()
NSMaxRange()
NSRangeFromString()
NSStringFromRange()

NSUnionRange()

#import <Foundation/Foundation.h>

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

    @autoreleasepool {
        
       //创建 NSRange
        NSRange range=NSMakeRange(0, 2);//0表示位置 2表示长度
        NSLog(@"(%li,%li)",range.location,range.length);//输出 (0,2)
        
        //也可如下输出,输出的是 NSString
        NSLog(@"%@",NSStringFromRange(range));//输出 {0, 2}

        
        //用 NSRange 截取 NSString
        NSString *pStr=@"string";
        NSString *pStr2=[pStr substringWithRange:range];
        NSLog(@"%@",pStr2);//输出 st
        
        //在  NSString 中查找 另一个 字符串(NSString)返回NSRange类型
        NSRange range2=[pStr rangeOfString:@"st"];
        NSLog(@"(%li,%li)",range2.location,range2.length);//输出 (0,2)
        
        //如果没有该字符串则 range3.length=0
        //示例
        NSRange range3=[pStr rangeOfString:@"stt"];
        if (range3.length==0)
        {
            NSLog(@"%@",NSStringFromRange(range3));
            NSLog(@"没有找到");
        }
        else
        {
            NSLog(@"%li,%li",range3.location,range3.length);
        }
        //输出结果:{9223372036854775807, 0}  没有找到
        
        //NSEqualRanges()判断两个范围是否相等  返回BOOL类型
        //相等返回YES
        BOOL Bool= NSEqualRanges(range,range2);
        NSLog(@"%i",Bool);
        
        //NSIntersectionRange()方法不常用 不知道什么意思 好像是交叉什么的
        //有知道的说以一下
        NSRange range4= NSIntersectionRange(range, NSMakeRange(1,2));
        NSLog(@"%@",NSStringFromRange(range4));//{1, 1}
        
    return 0;
}
}


另外结构体:NSPoint  NSSize  NSMakeRect 如下:

#import <Foundation/Foundation.h>

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

    @autoreleasepool {
        
        // NSPoint的定义
         /*
         typedef struct _NSPoint {
         CGFloat x;
         CGFloat y;
         } NSPoint;
         */
        
        //初始化 NSPoint 结构体
        NSPoint point=NSMakePoint(3, 4);
        //输出
        NSLog(@"%@",NSStringFromPoint(point));//以 NSString 格式输出 {3, 4}
        
        
        //从NSPoint获取x,y坐标
        int xCoord=point.x;
        int  yCoord=point.y;
        NSLog(@"x=%i,y=%i",xCoord,yCoord);//输出 x=3,y=4
        
        //NSSize的定义
        /*
         typedef struct _NSSize {
         CGFloat width;		//should never be negative
         CGFloat height;		// should never be negative
         } NSSize;
         */

        //初始化 NSSize (表尺寸)
        NSSize size=NSMakeSize(3.5, 4.5);
        // 说明:3.5是width,4.5是height
        NSLog(@"%@",NSStringFromSize(size));
        //输出 {3.5, 4.5}
        float width=size.width;
        float height=size.height;
        NSLog(@"width=%f,height=%f",width,height);
        //输出 width=3.500000,height=4.500000
        

        
        //NSMakeRect 初始化
        NSRect rect=NSMakeRect(0, 0, 20, 10);
        NSLog(@"%@",NSStringFromRect(rect)); //输出 {{0, 0}, {20, 10}}
        //说明{0,0}确定位置,{20,10} 确定尺寸大小
  
    }
    return 0;
}



你可能感兴趣的:(Obeject-C 结构体 NSRange NSPoint NSSize NSMakeRect)