您的位置:首页 > 职场人生

黑马程序员——foundation框架之结构体

2014-06-19 03:48 323 查看
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
前两天学校期末考试,所以没怎么看视频,今天终于有时间 了,于是迫不及待的看了关于foundation框架的视频。

首先讲的时NSRange

其实功能很简单,就是查找字符串的位置。

NSRange的定义

typedef struct _NSRange

{

unsigned int location;

unsigned int length;

}NSRange;

NSMakeRange函数

--这个函数比较特殊 返回一个NSRange的对象。

NSMakeRanger(unsigned int location,unsigned int length);

例如:

NSRange range = NSMakeRanger(0,5);

NSLog(@"location is %d,length is %d",range.location,range.length);

如果想知道一个字符在字符串中的位置就可以使用rangeOfString方法

NSString *str = @"i love oc";

// 查找某个字符串在str中的范围
// 如果找不到,length=0,location=NSNotFound==-1
NSRange range = [str rangeOfString:@"java"];
NSLog(@"loc = %ld, length=%ld", range.location, range.length);


CGpoint/NSpoint

这个类的主要作用就是在开发中确定坐标

定义一个点的坐标有两种方式

里面有两个参数x,y分别表示x坐标和y坐标。

CGpoint p1 = NSMakePoint(10,10);
NSpoint p2 = CGMakePoint(10,10);//这个是最常用的


CGSize/NSSize

这个类的作用就是定义UI控件的大小

里面也有两个参数,表示长宽

定义和NSpoint一样

NSSize s2 = NSMakeSize(100, 50);
CGSize s3 = NSMakeSize(200, 60);


NSRect/CGRect

这个类其实就是CGpoint/NSpoint与CGSize/NSSize的组合

它的参数有4个,分别是x坐标y坐标,以及长宽。

表示的就是控件的位置和大小。

CGPoint p1 = NSMakePoint(10, 10);

NSSize s2 = NSMakeSize(100, 50);

CGRect r1 = CGRectMake(0, 0, 100, 50);

CGRect r2 = { {0, 0}, {100, 90}};

CGRect r3 = {p1, s2};


还有就是如果想使用上面的类必须要导入CoreGraphics框架才行。

CGSizeZero表示原点 == CGpoint(0,0);

将结构体转换为字符串

NSString *str = NSStringFromPoint(p1);

NSString *str = NSStringFromSize(s3);
比较两个点是否是相同的点

CGPointEqualToPoint

BOOL b = CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));


同样也可以比较控件的大小是否一样或者是位置大小都是否一样

CGRectEqualToRect(<CGRect rect1>, <CGRect rect2>)
CGSizeEqualToSize(<CGSize size1>, <CGSize size2>)
判断这个点是否在这个范围内

CGRectContainsPoint

BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(60, 45));


NSString以及子类NSMutableString

一个是不可变字符串一个是可变字符串
MJ老师的代码很清晰的体现了NSString和NSMutableString

#import <Foundation/Foundation.h>
/*
NSString : 不可变字符串

NSMutableString : 可变字符串
*/

int main()
{

NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];
// 拼接内容到s1的后面
[s1 appendString:@" 11 12"];

// 获取is的范围
NSRange range = [s1 rangeOfString:@"is"];
[s1 deleteCharactersInRange:range];

NSString *s2 = [NSString stringWithFormat:@"age is 10"];

NSString *s3 = [s2 stringByAppendingString:@" 11 12"];

NSLog(@"s1=%@, s2=%@", s1, s2);

return 0;
}

void stringExport()
{
// 字符串的导出
[@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/my.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];

NSString *str = @"4234234";
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/my2.txt"];
[str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];
}

void stringCreate()
{
/*
1.字符串的创建
*/
NSString *s1 = @"jack";

//NSString *s2 = [[NSString alloc] initWithString:@"jack"];

NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", 10];

// C字符串 --> OC字符串
NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"];
// OC字符串 --> C字符串
const char *cs = [s4 UTF8String];

// NSUTF8StringEncoding 用到中文就可以用这种编码
NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];

// URL : 资源路径
// 协议头://路径
// file://
// ftp:// // http://weibo.com/a.png 
// http://www.baidu.com 
// NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"];
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"];

NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSLog(@"s6=\n%@", s6);

/*
一般都会有一个类方法跟对象方法配对
[NSURL URLWithString:<(NSString *)>];
[NSString stringWithFormat:@""];
[NSString stringWithContentsOfFile:<(NSString *)> encoding:<(NSStringEncoding)> error:<(NSError *__autoreleasing *)>];

*/

}
上面是NSSting的一些方法

接下来就是NSMutableString

NSMutableString *s1 = [NSMutableString stringWithFormat:@"something"];
[s1 appendString:@""];//拼接字符串
[s1 deleteCharactersInRange:NSMakeRange(4,2)];


基本上关于NSString的内容就没了

----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: