Objective-C 9 常用结构体

OC中经常用到的结构体

NSRange

第一个结构体NSRange,

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

它用来表示相关事物的范围,通常是字符串里的字符范围和数组里的元素范围。

location存放该范围的起始位置,而length则是该范围内所含元素的个数。

比如字符串"Objective-c lol hello"中,"lol'可以用location为12,length为3来表示。

location还可以用NSNotFound这个值没有范围,比如不包含某个元素。


NSRange有三种创建方式。

1 直接给字段赋值

NSRange range;

range.location = 12;

range.length = 3;

2 应用C语言的聚合结构赋值机制

NSRange range = {12,3};

或者NSRange range = {.location = 12,.length = 3};

3 Cocoa提供的一个快捷函数NSMakeRange();

NSRange range = NSMakeRange (12,3);

使用NSMakeRange的好处是可以在任何能够使用函数的地方使用它,例如在方法调用其作为参数进行传递。

转换为字符串

NSString *str = NSStringFromRect(range);

NSLog(@"%@",str);


获取范围

NSString *str = @"他喜欢玩adc中的 vn和 jinkesi";  
NSString *adc = @"adc";  
NSRange rang = [str rangeOfString:adc];
NSLog(@"location:%lu", (unsigned long)rang.location); 
NSLog(@"length:%lu", (unsigned long)rang.length);  
结果为:

location:4

length:3


NSPoint 和CGPoint

经常会看到用来处理图形的数据类型,它们的名称带有CG前缀,这些类型是由Core Graphics框架提供的。

NSPoint 在Foundation/NSGeometry.h中定义

typedef  CGPoint  NSPoint;

在CoreGraphics/CGGeometry.h中定义

struct CGPoint{

     CGFloat x;

     CGFloat y;

}

typedef  struct  CGPoint  NSPoint;

NSPoint 和CGPoint是等价的,它们代表平面中的一个坐标(x,y)。


创建方式

1 赋值

NSPoint np ;

np.x = 12;

np.y = 55;

2 快捷函数

NSPoint np = NSMakePoint(11,22);

NSPoint np1 = CGPointMake(11,22);

转换为字符串

NSString *str = NSStringFromRect(np);

NSLog(@"%@",str);



NSSize和CGSize

NSSize 在Foundation/NSGeometry.h中定义

typedef  CGSize NSSize;

在CoreGraphics/CGGeometry.h中定义

struct CGSize{

     CGFloat width;

     CGFloat height;

}

typedef  struct  CGSize  NSSize;

NSSize 和CGSize是等价的,它们用来存储长度和高度。


创建方式

1 赋值

NSSize ns ;

ns.width = 50;

ns.height = 100;

2 快捷函数

NSSize ns = NSMakeSize(50,100);

NSSize ns1 = CGSizeMake(50,100);

将NSSize类型转换为NSString ,

NSString *str = NSStringFromSize(ns);

NSLog(@"%@",str);


NSRect 和CGRect


NSRect 在Foundation/NSGeometry.h中定义

typedef  CGRect  NSRect;

在CoreGraphics/CGGeometry.h中定义

struct CGRect{

     CGPoint  origin;

     CGSize  size;

}

typedef  struct  CGRect NSRect;

NSRect 和CGRect是等价的,它包含坐标和大小。

创建

NSRect rt;

rt.origin.x = 10;

rt.origin.y = 12;

rt.size.width = 100;

rt.size.height = 100;

快捷函数

rt = NSRectMake(10,12,100,100);

或者rt = CGMakeRect(10,12,100,100);

NSString *str = NSStringFromRect(rt);

NSLog(@"%@",str);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值