MSRange系统提供的范围结构体对应的函数NSMakeRange(1,3);
CG前缀代表集合图形的数据类型 CGPoint CGSize CGRest(坐标和大小)对应的函数分别是CGPointMake();CGSizeMake();CGRectMake();
关于NSInteger int用法和java一致
isEqualToString 返回的Bool类型
compare返回的enum枚举类型 如下
enum
{
NSOrderedAscending=-1,
NSOredSame,
NSORderdDescending
}返回上面3个值其中的一个
还有一种区分大小写的比较方法 例如[things compare:thing2 option:NSCaseInsensitiveSearch|NSNumericSearch]
其中 NSCaseInsensitiveSearch不区分大小写
NSNumericSearch比较字符串值,比如10会排在9前面
NSListeralSearch 进行完全比较,区分大小写
hasPrefix
hasSuffix这2个返回bool
rangeOfString 匹配是否为子串没有返回一个枚举NSRange 没有找到range.location则等于NSNotFound
NSString是不可改变的,MSMutableString是可以改变的并且他是NSString的子类
创建的方法[MSMutableString stringWithCapacity 42]
appendString
appendFormat
deleteCharactersInRange
ranfeofString
NSArray *array=[NSArray arrayWithObject:.......];//nil结束
NSArray *array=@[......];//不需要nil结束
获得指定对象可以是 objectAtindex 或者arrays[i] 长度是count方法
排序 NSArray *a=[array sortarrayUsingComparator:^(NSString *a,NSString *b){return [a compare:b];}]
NSMutableArray
创建的方法[NSMutableArray arrayWithCapacity 42]
addObject
removeObjectAtIndex
枚举
NSEnumerator
[array objectEnumerator] 也可以reversObjectEnumerator
nextObject下一个 直到nil结束
快速枚举
类似java
for(String *string in array)
{
//
}
代码库枚举
[array enumerateObjectsUSingBlock:^(NString *string,NSUintefer index,Bool *stop){
NSLog()}]
NSDictionary 字典类似于MAP
NSString对应一个值(通常)
NSDictionary dictionary=[NSDictionary dicionaryWithObjectArrays :objetc1,key......];
objectForkey或者tires[key]
NSMutableDictionary
创建[NSMutableDictionary dictionaryWithCapacity 42]
-(void) setObject:(id)object forKey:(id)key
removeObjectForKey
NSArray和NSDictionary只能存储对象不能是int 类型等
可以转化成NSNumber
such as
numberWithInt:2或者NSNumber value=@2
当然也可以intValue转换
结构体也可以
NSRect rect=NSMakeRect(1,2,3,4);
NSValue *value=[NSValue valueWithByte:&rect objCType :@encode(NSRect)];
value=[array objectAtIndex :0] [ value getValue:&rect]
NSPoint NSSize NSRect 对应的方法
+valueWithPoint 转成NSValue方法
-pointValue转成point
集合等不能存放nil但是可以NSNull
NSNULL null实例化
NSFileManager *manager;
manager=[NSFileManager defaultManager];
NSString *home;
home=[@"~" stringByExpandingTildeInPath];
NSLog(home);
NSDirectoryEnumerator *director;
director=[manager enumeratorAtPath:home];
while(home=[director nextObject])
{
NSLog([home pathExtension]);
}
NSFileManager *manager;
manager=[NSFileManager defaultManager];
NSString *home;
home=[@"~" stringByExpandingTildeInPath];
NSLog(home);
NSEnumerator *director;
director=[manager enumeratorAtPath:home];
for(NSString *string in director)
{
NSLog([string pathExtension]);
}
对象初始化
[Cricle new] 或者[[Circle alloc] init]
@property
@synthesize
@dynamic企图调用不存在的get set方法将报错
@selector(setSize:) 相信选择器 方法名有2点无2点取决有没有参数 225(OBJECT-C)后面一班跟着Object 参数
@encode(NSRect) 类型
是否能响应方法repondsToselector方法
像方法发送消息:
timer=[NSTimer scheduledTimerWithTimeInteral:3.0 target:self selector:@selector(handle:) userInfo:nil repeats:YES];
代码块
int (^hehe)(int i)=^(int i){return i};
直接用 ^(int i){return i};
//判断是否实现了onClick:btn_id:方法
if([[self listener] respondsToSelector:@selector(onClick:btn_id:)])
并发性
1.后台运行方法
NSObject 有个perforSelectorInBackground:withObject:(只能有一个参数而且方法中都有自动释放池(@autoreleasepool{}))
队列(连续,并发,主队列)
连续 dispath_queue_t my;
my=dispath_queue_creat("name",NULL);
并发
my=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);第一个参数有先级还有参数尾号为HIGT he low
主队列
my=dispatch_get_current_queue(void);
上下文
dispatch_set_context(my,(_bridge_retained void *)context);
context=(_bridge NSMutableDictionart *)dispatch_get_context(my);
最后要启用上下文自己写终结函数
添加任务
dispatch_async_(my,canshu,fangfaming或者duilie)
暂停dispatch_suspend(my)重新dispatch_resume(my);
操纵队列(现成的)
针对方法的 NSInvocationOperation
return [[NSInvocationOperation alloc] inintWithTarget:self selector:@selector(fangf:) object:data];
针对代码快
NSBlockOperation *he=[NSBlockOperation blockOperationWithBlock:^{}];
addExecetionBlock添加
向队列添加操作
NSOperation *oe=[[NS... alloc] init];
[oe addOperation:my];
[oe addOperationWithBlock:^(){NSLog.....}];
文件加载和保存
NSDate
初始化 data
间隔的时差 dateWithTimeIntervalSinceNoew:-(24*60*60)
NSData
[NSData dataWithBytes:length:len+1]
属性文件有个writeTofile:地址 atomically:YES属于xml文件
得到属性类[NSArray arrayWithContentsofFile:地址];
NSCoding协议
encodeWithCoder:(NSCoder *)coder
{
[coder encodeObject:name forKey:@"name"]
}
inintWithCoder:(NSCoder*) decoder
{
if(self=[super init])
{
self.name=[decoder decodeObjectForkey:@"name"]
}
return self;
}
KVC
-valyeForKey
setValue: forkey:
整体操作 [car valueForKeyPath:@"tires.pressure"]
运算 [car valueForKeyPath:@"pp.@count"];
批量处理
NSArray *keys=[NSArray arraywityObjects:@"name",@"age",nil];
NSDictionary *d=[car dictionaryWithValueKeys:keys];
[car setValuesForKeysWithDictory:newvalues]设置新的值
NSPredicate
predicate=[NSPredicate predicateWithForcat:@"name=='lvshujun'"];
BOOL match=[predicate evaluateWithObject:car];
数组过滤
Arrays *cars;
Array *result;
result=[cars filteredArraysUsingPredicate :predicate];
格式说明符:predicate=[NSPreicate predicateFormat @"hehe.age?%d",50]
谓词模板 predicateTemplate=[NSPreicate predicateFormat:@"name=$NAME"];
NSDictionart *var=[NSDictionart dictionaryWithObjecsandKeys:@"Heribate",@"NAME",nil];
predicate=[predicateTemplate predicateWithSubstitutionVariables:var];
比较浮:AND BETWEEN IN等
SELF
模板
NSArray *names1=[NSArray arrayWithObjects:.......,nil];
NAArray *names2=.......;
predicate=[NSPredicate predicateWithFormat:@"SELF IN %@",names1];
NSArray *result=[names2 filteredArrayUsingPredicate:predicate];