黑马程序员_ios基础总结12_OCFoundation1

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

Block

1.1Block简介

Block封装了一段代码,可以在任何时候执行
Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:block是inline(内联函数)的,并且默认情况下它对局部变量是只读的
苹果官方建议尽量多用block。在多线程、异步任务、集合遍历、集合排序、动画转场用的很多

1.2Block定义

int (^Sum)(int, int) = ^(int num1, int num2) {
	return num1+num2;
};

定义了一个叫Sumblocks对象,它带有两个int参数,返回int。等式右边就是blocks的具体实现


Block可以访问局部变量,但是不能修改

intsum=10;
int(^MyBlock)(int)= ^(intnum){
  sum++;//编译报错
  returnnum* sum;
};

如果要修改就要加关键字:__block

__block intsum = 10;

1.3Blocks的赋值

在声明的同时定义变量,然后赋值
int (^MySum)(int,int) = ^(int a,int b) {
	return a + b;
};
也可先用typedef先声明类型,再定义变量进行赋值

typedef int (^MySum)(int,int);
MySum sum = ^(int a,int b) {
	return a + b;
}; 

NSRange

在Foundation/NSRange.h中对NSRange的定义:
typedef struct _NSRange{
     NSUInteger location;
     NSUInteger length;
} NSRange;
这个结构体用来表示事物的一个范围,通常是字符串里的字符范围或者集合里的元素范围
location表示该范围的起始位置
length表示该范围内所含的元素个数
比如”Ilove objective-c”中的”obj”可以用location7length3的范围来表示

2.1创建NSRange的三种方法

1>直接给成员赋值

NSRange range;
range.location = 7;
range.length = 3;
2>应用C语言的聚合结构赋值机制

NSRange range = {7, 3};
NSRange range = {.location = 7,.length = 3};

3>Foundation框架提供的一个快捷函数NSMakeRange
NSRange range = NSMakeRange(7,3);


NSPoint

在Foundation/NSGeometry.h中对NSPoint的定义
typedef CGPoint NSPoint;
在CoreGraphics/CGGeometry.h中对CGPoint的相关定义
struct CGPoint {
  CGFloat x;
  CGFloat y;
};

typedef struct CGPoint CGPoint;

// #define CGFLOAT_TYPE double

// typedef CGFLOAT_TYPE CGFloat;

lNSPoint和CGPoint是等价的
l这个结构体代表的是平面中的一个点(x,y)

Foundation框架提供了一个NSMakePoint()创建NSPoint

NSPointpoint = NSMakePoint(10, 20);

或者

CGPointpoint = NSMakePoint(10, 20);

CoreGraphics框架中也提供了CGPointMake()创建一个NSPoint(CGPoint)

NSPointpoint = CGPointMake(10, 20);

或者

CGPointpoint = CGPointMake(10, 20);



NSSize

Foundation/NSGeometry.h中对NSSize的定义
typedef CGSize NSSize;
CoreGraphics/CGGeometry.h中对CGSize的相关定义
struct CGSize {
  CGFloat width;
  CGFloat height;
};

这个结构体用来存储宽度和高度
可以利用NSMakeSize()CGSizeMake()创建CGSize

NSString

5.1NSString的创建

创建常量字符
NSString *string = @"This is a String!";
创建空字符串,给予赋值
NSString *string = [[NSString alloc] init];
string = @"This is a String!”; 
通过字符串创建字符串
[[NSString alloc] initWithString:@"This is a String!"];
用标准c创建字符
char *cString = "这是一串中文";
[[NSString alloc] initWithCString:cString 			
encoding:NSUTF8StringEncoding];
或者 [[NSString alloc] initWithUTF8String:cString];

5.2NSString的读取

从文件中读取
NSError *error = nil;  
NSString *path = @"/Users/apple/Desktop/test.txt"; 
NSString *string = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
从一个Url读取字符串
NSError *error = nil;  
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSString *string = [[NSString alloc] initWithContentsOfURL:url 
encoding:NSUTF8StringEncoding error:nil];

5.3将字符串写入文件

NSString *string = @"字符串";
NSString *path = @"/Users/apple/Desktop/abc.txt";
[string writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];

5.4NSString大小写处理

- (NSString *)uppercaseString
全部转为大写字母
- (NSString *)lowercaseString
全部转为小写字母
- (NSString *)capitalizedString
首字母变大写,其他字母都变小写

5.5NSString的比较

- (BOOL)isEqualToString:(NSString *)aString

比较两个字符串的内容是否相同,相同就返回YES,不同则返回NO

- (NSComparisonResult)compare:(NSString*)string

逐个字符地进行比较,返回NSComparisonResult来显示比较结果.

NSComparisonResult是一个枚举,有3个值:

NSOrderedAscending= -1L, NSOrderedSame, NSOrderedDescending

如果左侧大于右侧,返回NSOrderedDescending,

如果左侧小于右侧,返回NSOrderedAscending,

否则返回NSOrderedSame

- (NSComparisonResult)caseInsensitiveCompare:(NSString*)string

忽略大小写进行比较,返回值与compare:一致


5.6NSString中搜索字符串

- (BOOL)hasPrefix:(NSString *)aString

是否以aString开头

- (BOOL)hasSuffix:(NSString *)aString

是否以aString结尾

- (NSRange)rangeOfString:(NSString*)aString

检查是否包含了aString,如果包含,就返回aString的位置,如果不包含,NSRangelocation-1,length0

- (NSRange)rangeOfString:(NSString*)aString options:(NSStringCompareOptions)mask

可以传递一个mask参数,改变搜索方式

比如NSStringCompareOptionsNSBackwardsSearch表示从尾部开始搜索

- (NSRange)rangeOfString:(NSString*)aString options:(NSStringCompareOptions)mask range:(NSRange)searchRange

还可以用searchRange指定搜索范围



       5.6NSString的截取

- (NSString*)substringFromIndex:(NSUInteger)from

指定位置from开始(包括指定位置的字)到尾部

- (NSString*)substringToIndex:(NSUInteger)to

从字符串的开头一直截取到指定的位置to但不包括该位置的字符

- (NSString*)substringWithRange:(NSRange)range

按照所给出的NSRange字符串中截取子串

- (NSArray*)componentsSeparatedByString:(NSString *)separator

separator为分隔符截取子串返回一个装着所有子串的集合NSArray


5.7NSString其他用法

- (NSUInteger)length

返回字符串的长度(字符个数) 

- (unichar)characterAtIndex:(NSUInteger)index

返回index位置对应的字符

- (double)doubleValue
- (float)floatValue
- (int)intValue
- (char*)UTF8String

转为C语言中的字符串











---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值