一、NSRange
NSRange的定义
typedef struct _NSRange
{
NSUInteger location;
NSUInteger length;
} NSRange;
NSrange的用法
用法1:查找每个字符串在str中的范围
表达1:
// NSRange r1 = {2,4}; //不用
// NSRange r2 = {.location = 2,.length = 4}; //不用
// NSRange r3 = NSMakeRange(2, 4); //掌握
//查找每个字符串在str中的范围
//如果找不到 length = 0 ,location = NSNotFound==-1
NSString *str = @"I love OC";
NSRange range = [str rangeOfString:@"love"];
NSLog(@"location = %lu,length = %lu",range.location,range.length);
表达2:
NSString *str3 = @"Imperial India Pale Ale (IPA)";
NSRange r4 = [str3 rangeOfString:@"IPA"];
// Did we find the string "IPA" ?
if (r4.length > 0)
NSLog(@"Range is: %@", NSStringFromRange(r4));
return 0;
NSString *str2 = @"Imperial India Pale Ale (IPA)";
// Starting at position 25, get 3 characters
NSRange r2 = NSMakeRange (25, 3);
// This would also work:
// NSRange range = {25, 3};
NSLog (@"Beer shortname: %@", [str2 substringWithRange:r2]);
二、NSPoint\CGpoint NSSize\CGSize NSRect\CGRect (CGPoint CGSize)
CGPoint p1 = NSMakePoint(10, 10);
NSPoint p2 = CGPointMake(20, 20); //最常用
NSSize s1 = CGSizeMake(100, 50);
NSSize s2 = NSMakeSize(100, 50);
CGSize s3 = CGSizeMake(200, 50);
CGRect r1 = CGRectMake(0, 0, 100, 50);
CGRect r2 = {{0,0},{100,90}};
CGRect r3 = {p1,s2};
CGRect r4 = {CGPointZero,CGSizeMake(100, 90)};
//CGPointZero == CGPointMake(0, 0);
//CGSizeZero == CGSizeMake(0,0);
//CGRectZero
//将结构体转为字符串
NSString *str = NSStringFromPoint(p1);
NSLog(@"%@",str);
NSString *str2 = NSStringFromSize(s2);
NSLog(@"%@",str2);
NSString *str3 = NSStringFromRect(r1);
NSLog(@"%@",str3);
三、Foundation结构体常见函数
//比较两个点是否相同
BOOL b = CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));
//CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>);
//CGRectEqualToRect(<#CGRect rect1#>, <#CGRect rect2#>);
BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(130, 70));
NSLog(@"%d",b2);