黑马程序员—Objective-C学习—Foundation—结构体和NSString
2014-11-04 19:07
246 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
a、location和length是两个unsigned long类型的数据
b、常用定义方法:NSRange r = NSMakeRange(2, 4);
#import <Foundation/Foundation.h>
int main(int argc,const
char * argv[]) {
@autoreleasepool {
/*
NSRange(location length)
NSPoint\CGPoint
NSSize\CGSize
NSRect\CGRect
*/
NSString *str =
@"i love oc";// love的位置
// location = 2
// length = 3
NSRange r1 = {2,4};
NSRange r2 = {.location =2,.length
=4};
NSRange r3 =
NSMakeRange(2,4);
NSString *str2 =
@"i love oc too";
//
查找某个字符串在str中的范围
//如果找不到,length = 0,location = NSNotFound == -1
NSRange range = [str
rangeOfString:@"ve"];
NSLog(@"location = %ld,length = %ld",range.location,range.length);
// range.location == NSUInteger == unsigned long
NSLog(@"%ld",NSNotFound);
}
return
0;
}
2、NSPoint\CGPoint表示位置,点
NSPoint == CGPoint CGPoint可以跨平台,所以常用CGPoint
a、这个结构体有两个CGFloat X和CGFloat Y的成员,其实是double类型
b、常用定义方法:NSPoint p = CGPointMake(20,20);
CGPoint p2 = NSMakePoint(10,10);
#import <Foundation/Foundation.h>
int main(int argc,const
char * argv[]) {
@autoreleasepool {
NSPoint p1=
NSMakePoint(10,10);
CGPoint p2=
CGPointMake(20,20);//
最常用
NSString *str =
NSStringFromPoint(p1);
BOOL b =
CGPointEqualToPoint(p1, p2);
NSLog(@"%d",b);
NSLog(@"%@",str);
}
return
0;
}
3、NSSize\CGSize表示一个UI元素的尺寸NSSize == CGSize
a、这个结构体有两个CGFloat width和CGFloat height成员
b、常用定义方法:NSSize s = CGSizeMake(100,50);
CGSize s = NSMakeSize(100,50);
#import <Foundation/Foundation.h>
int main(int argc,const
char * argv[]) {
@autoreleasepool {
NSSize s1 =
NSMakeSize(100,
50);
CGSize s2 =
CGSizeMake(100,50);
NSSize s3 =
CGSizeMake(200,60);
NSString *str =
NSStringFromSize(s3);
NSLog(@"%@",str);
BOOL b =
CGSizeEqualToSize(s1, s2);
NSLog(@"%d",b);
}
return
0;
}
4、NSRect\CGRect (CGPoint,CGSize) NSRect == CGRect
a、NSRect有NSPoint origin和NSSize size两个成员
#import <Foundation/Foundation.h>
// CGRect实现函数
CGRect myRect(CGFloat x,CGFloat y,
CGFloat width,CGFloat height)
{
CGRect rect;
rect.origin.x = x;
rect.origin.y = y;
rect.size.width = width;
rect.size.height = height;
return rect;
}
int main(int argc,const
char * argv[]) {
@autoreleasepool {
CGRect r1 =
CGRectMake(0,0,
100, 50);
/*
struct CGRect {
CGPoint origin;
CGSize size;
*/
//
想要把r1内所有属性输出看看
NSLog(@"x=%.2f, y=%f, width=%f, height=%f",r1.origin.x,
r1.origin.y, r1.size.width,
r1.size.height);
//另一种方法
NSString * str =
NSStringFromRect(r1);
NSLog(@"%@", str);
//
创建NSRect的其他方式
CGRect r2 = {{0,0},{100,50}};
CGPoint p1 =
CGPointMake(10,10);
CGSize s2 =
CGSizeMake(100,90);
CGRect r3 ={p1,s2};
/*
CGPointZero == CGPointMake(0, 0);返回值是const常量,
CGSizeZero;
CGRectZero;
*/
CGRect r4 = {CGPointZero,CGSizeMake(100,90)};
//
判断两个Rect是否相同
BOOL b =
CGRectEqualToRect(r1, r2);
NSLog(@"%d",b);
//下面的高级功能属于CoreGrapgics框架,以CG开头的功能基本都在这里
//
判断Rect是否包含Point
BOOL b2 =
CGRectContainsPoint(r4, p1);
/*
point表示rect左上角的点,因为左上角是坐标原点,向右和向下增加
*/
NSLog(@"%d",b2);
}
return
0;
}
二、常用类– NSString
1、NSString : 不可变字符串
#import <Foundation/Foundation.h>
/*
NSString:不可变字符串
NSMutableString:可变字符串,是NSString的子类
*/
int main(int argc,
const char * argv[]) {
@autoreleasepool {
//1、字符串的创建
NSString *s1 = @"321321321";
// 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 * c = [s4
UTF8String];
//
从文件中读取字符串,传入绝对路径, // NSUTF8StringEncoding用到中文就可以用这种编码
NSString *s5 = [[NSString
alloc]initWithContentsOfFile:@"/Users/lanwendong/Desktop/黑马程序员_IOS开发零基础教程源代码和PPT/课程代码/代码/0724/代码/02-第二个C语言程序.c"encoding:NSUTF8StringEncoding
error:nil];
NSLog(@"%@",s5);
// URL :
资源路径
//
协议头://路径
//
网络资源http://weibo.com/a.png
//
本地文件file://
// ftp服务器上ftp://
// NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/lanwendong/Desktop/黑马程序员_IOS开发零基础教程源代码和PPT/课程代码/代码/0724/代码/02-第二个C语言程序.c;
//
利用类方法创建url
NSURL *url = [NSURL
fileURLWithPath:@"/Users/lanwendong/Desktop/黑马程序员_IOS开发零基础教程源代码和PPT/课程代码/代码/0724/代码/02-第二个C语言程序.c"];
NSString *s6 = [[NSString
alloc] initWithContentsOfURL:url
encoding:NSUTF8StringEncoding
error:nil];
NSLog(@"s6=\n%@", s6);
// 利用类方法创建(一般都会有一个类方法跟对象方法配对)
// [NSString stringWithFormat:@""];
//
// [NSString stringWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>];
//
// [NSURL URLWithString:<#(NSString *)#>];
// 将字符串写入文件:写YES写入失败文件不会创建新文件
[@"jack\njack"
writeToFile:@"/Users/lanwendong/Desktop/黑马程序员_IOS开发零基础教程源代码和PPT/课程代码/代码/0724/代码/02-第二个C语言程序.c"
atomically:
YES
encoding:NSUTF8StringEncoding
error:nil];
NSString *str = @"12312321";
[str writeToURL:url
atomically:YES
encoding:NSUTF8StringEncoding
error:nil];
}
return 0;
}
2、NSMutableString :可变字符串
#import <Foundation/Foundation.h>
int main(int argc,
const char * argv[]) {
@autoreleasepool {
NSMutableString *s1 = [NSMutableString
stringWithFormat:@"age is %d",10];
NSString *s2 = [[NSString
alloc]initWithFormat:@"age is %d",10];
//
拼接内容到s1的后面
[s1
appendString:@"11 12"];//
无返回值
//
获取“is”的范围
NSRange range = [s1
rangeOfString:@"is"];
//
删除指定范围内的字符
[s1 deleteCharactersInRange:range];
//这个方法会拿到s2的字符串拷贝一份,进行拼接,赋值给s3形成新的字符串,原来的不便
NSString *s3 = [s2
stringByAppendingString:@"11 12"];//
有返回值
}
return 0;
}
两者的主要区别是后者可被改变,前者不可被改变,就算调用了stringByAppendingString:@"11 12"也只是创建一个新的不可变字符串
一、Foundation – 结构体
1、NSRange(location length)表示范围a、location和length是两个unsigned long类型的数据
b、常用定义方法:NSRange r = NSMakeRange(2, 4);
#import <Foundation/Foundation.h>
int main(int argc,const
char * argv[]) {
@autoreleasepool {
/*
NSRange(location length)
NSPoint\CGPoint
NSSize\CGSize
NSRect\CGRect
*/
NSString *str =
@"i love oc";// love的位置
// location = 2
// length = 3
NSRange r1 = {2,4};
NSRange r2 = {.location =2,.length
=4};
NSRange r3 =
NSMakeRange(2,4);
NSString *str2 =
@"i love oc too";
//
查找某个字符串在str中的范围
//如果找不到,length = 0,location = NSNotFound == -1
NSRange range = [str
rangeOfString:@"ve"];
NSLog(@"location = %ld,length = %ld",range.location,range.length);
// range.location == NSUInteger == unsigned long
NSLog(@"%ld",NSNotFound);
}
return
0;
}
2、NSPoint\CGPoint表示位置,点
NSPoint == CGPoint CGPoint可以跨平台,所以常用CGPoint
a、这个结构体有两个CGFloat X和CGFloat Y的成员,其实是double类型
b、常用定义方法:NSPoint p = CGPointMake(20,20);
CGPoint p2 = NSMakePoint(10,10);
#import <Foundation/Foundation.h>
int main(int argc,const
char * argv[]) {
@autoreleasepool {
NSPoint p1=
NSMakePoint(10,10);
CGPoint p2=
CGPointMake(20,20);//
最常用
NSString *str =
NSStringFromPoint(p1);
BOOL b =
CGPointEqualToPoint(p1, p2);
NSLog(@"%d",b);
NSLog(@"%@",str);
}
return
0;
}
3、NSSize\CGSize表示一个UI元素的尺寸NSSize == CGSize
a、这个结构体有两个CGFloat width和CGFloat height成员
b、常用定义方法:NSSize s = CGSizeMake(100,50);
CGSize s = NSMakeSize(100,50);
#import <Foundation/Foundation.h>
int main(int argc,const
char * argv[]) {
@autoreleasepool {
NSSize s1 =
NSMakeSize(100,
50);
CGSize s2 =
CGSizeMake(100,50);
NSSize s3 =
CGSizeMake(200,60);
NSString *str =
NSStringFromSize(s3);
NSLog(@"%@",str);
BOOL b =
CGSizeEqualToSize(s1, s2);
NSLog(@"%d",b);
}
return
0;
}
4、NSRect\CGRect (CGPoint,CGSize) NSRect == CGRect
a、NSRect有NSPoint origin和NSSize size两个成员
#import <Foundation/Foundation.h>
// CGRect实现函数
CGRect myRect(CGFloat x,CGFloat y,
CGFloat width,CGFloat height)
{
CGRect rect;
rect.origin.x = x;
rect.origin.y = y;
rect.size.width = width;
rect.size.height = height;
return rect;
}
int main(int argc,const
char * argv[]) {
@autoreleasepool {
CGRect r1 =
CGRectMake(0,0,
100, 50);
/*
struct CGRect {
CGPoint origin;
CGSize size;
*/
//
想要把r1内所有属性输出看看
NSLog(@"x=%.2f, y=%f, width=%f, height=%f",r1.origin.x,
r1.origin.y, r1.size.width,
r1.size.height);
//另一种方法
NSString * str =
NSStringFromRect(r1);
NSLog(@"%@", str);
//
创建NSRect的其他方式
CGRect r2 = {{0,0},{100,50}};
CGPoint p1 =
CGPointMake(10,10);
CGSize s2 =
CGSizeMake(100,90);
CGRect r3 ={p1,s2};
/*
CGPointZero == CGPointMake(0, 0);返回值是const常量,
CGSizeZero;
CGRectZero;
*/
CGRect r4 = {CGPointZero,CGSizeMake(100,90)};
//
判断两个Rect是否相同
BOOL b =
CGRectEqualToRect(r1, r2);
NSLog(@"%d",b);
//下面的高级功能属于CoreGrapgics框架,以CG开头的功能基本都在这里
//
判断Rect是否包含Point
BOOL b2 =
CGRectContainsPoint(r4, p1);
/*
point表示rect左上角的点,因为左上角是坐标原点,向右和向下增加
*/
NSLog(@"%d",b2);
}
return
0;
}
二、常用类– NSString
1、NSString : 不可变字符串
#import <Foundation/Foundation.h>
/*
NSString:不可变字符串
NSMutableString:可变字符串,是NSString的子类
*/
int main(int argc,
const char * argv[]) {
@autoreleasepool {
//1、字符串的创建
NSString *s1 = @"321321321";
// 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 * c = [s4
UTF8String];
//
从文件中读取字符串,传入绝对路径, // NSUTF8StringEncoding用到中文就可以用这种编码
NSString *s5 = [[NSString
alloc]initWithContentsOfFile:@"/Users/lanwendong/Desktop/黑马程序员_IOS开发零基础教程源代码和PPT/课程代码/代码/0724/代码/02-第二个C语言程序.c"encoding:NSUTF8StringEncoding
error:nil];
NSLog(@"%@",s5);
// URL :
资源路径
//
协议头://路径
//
网络资源http://weibo.com/a.png
//
本地文件file://
// ftp服务器上ftp://
// NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/lanwendong/Desktop/黑马程序员_IOS开发零基础教程源代码和PPT/课程代码/代码/0724/代码/02-第二个C语言程序.c;
//
利用类方法创建url
NSURL *url = [NSURL
fileURLWithPath:@"/Users/lanwendong/Desktop/黑马程序员_IOS开发零基础教程源代码和PPT/课程代码/代码/0724/代码/02-第二个C语言程序.c"];
NSString *s6 = [[NSString
alloc] initWithContentsOfURL:url
encoding:NSUTF8StringEncoding
error:nil];
NSLog(@"s6=\n%@", s6);
// 利用类方法创建(一般都会有一个类方法跟对象方法配对)
// [NSString stringWithFormat:@""];
//
// [NSString stringWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>];
//
// [NSURL URLWithString:<#(NSString *)#>];
// 将字符串写入文件:写YES写入失败文件不会创建新文件
[@"jack\njack"
writeToFile:@"/Users/lanwendong/Desktop/黑马程序员_IOS开发零基础教程源代码和PPT/课程代码/代码/0724/代码/02-第二个C语言程序.c"
atomically:
YES
encoding:NSUTF8StringEncoding
error:nil];
NSString *str = @"12312321";
[str writeToURL:url
atomically:YES
encoding:NSUTF8StringEncoding
error:nil];
}
return 0;
}
2、NSMutableString :可变字符串
#import <Foundation/Foundation.h>
int main(int argc,
const char * argv[]) {
@autoreleasepool {
NSMutableString *s1 = [NSMutableString
stringWithFormat:@"age is %d",10];
NSString *s2 = [[NSString
alloc]initWithFormat:@"age is %d",10];
//
拼接内容到s1的后面
[s1
appendString:@"11 12"];//
无返回值
//
获取“is”的范围
NSRange range = [s1
rangeOfString:@"is"];
//
删除指定范围内的字符
[s1 deleteCharactersInRange:range];
//这个方法会拿到s2的字符串拷贝一份,进行拼接,赋值给s3形成新的字符串,原来的不便
NSString *s3 = [s2
stringByAppendingString:@"11 12"];//
有返回值
}
return 0;
}
两者的主要区别是后者可被改变,前者不可被改变,就算调用了stringByAppendingString:@"11 12"也只是创建一个新的不可变字符串
相关文章推荐
- 黑马程序员——Objective-C学习之不可变与可变字符串(NSString\NSMutableString)
- Objective-c学习笔记04——NSString
- 【黑马程序员】Objective-C语言学习笔记之小知识点
- 黑马程序员-14-Objective-C学习笔记(反射)
- 黑马程序员—Objective-C学习—block和protocol
- 黑马程序员—Objective-C学习—类和对象的内存管理
- Objective-C学习——NSString字符串的那些事儿(三)
- 黑马程序员-objective-c学习总结-代码行数统计程序
- 黑马程序员-9-Objective-C学习笔记(OC内存管理)
- 黑马程序员-8-Objective-C学习笔记(OC特有语法)
- 黑马程序员-objective-c基础学习-类
- 【黑马程序员】Objective-C语言学习笔记之类(二)
- 黑马程序员学习笔记_OC之NSString
- 黑马程序员_第六天视频学习 Objective-C的基本语法、类和对象
- 黑马程序员-10-Objective-C学习笔记(ARC)
- 【黑马程序员】Objective-C语言学习笔记之HelloWorld(一)
- 黑马程序员_Objective-C中的ARC学习总结
- 黑马程序员_Foundation学习之NSString、NSArray及相关
- 黑马程序员—Objective-C学习—基本语法、类和对象
- 黑马程序员-objective-c学习总结