Objective-c小结

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];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值