OC总结

//输出helle world

NSLog(@"hello world");

//实例化类对象

1,Student *st=[[Student alloc]init];

//*****和new方法区别:需要手动 release***////

id obj=[Student alloc]; //静态

st=[obj init];//动态

2,id obj=[obj new];

调用无参 [st funtion];

调用有参数 [obj funtion:12];

调用多参数 [obj funtion:12 andno:14];

//定义和实现

.h

@interface Student:NSObject{

int _age;  //这里定义成员变量

int _num;

}

-(int)Funtion;                                //“-”号属于动态方法

-(int)Funtion:(int)argc andno:(int)argv;       //多参数

+(void)StaticFuntion;                         //"+" 属于静态方法

@end

.m

-(void)Funti:(int)abc{

_num=abc

}//set方法

-(int)Abc{

return _num;

}//get方法

-(int)Funtion:(int)argc andno:(int)argv;{

_age=agrc;

_num=argv;

}

//构造方法和description方法

//构造实现方法

-(id)initMy:(int)a andNo:(int)b{

if(self==[super init])

{

_a=a;

_b=b;

}

return self;

}

//构造调用方法

Student *st=[[Student alloc]initMy:12 andNo:13];

//description方法

-(NSString*)description{

return @"123";

}

//把方法写在.m中 而不在.h中声明的 属于私有的方法

@private

@public

@protected  默认的访问权限

//简化 @peoperty  @synthesize //简化set get//

@peoperty int age;//用在.h   如果不写成员变量的话他自动生成同名的私有的成员变量,

如果有int _age;不会主动去访问这个下划线_age.. 要访问_age 必须如下写法

@synthesize age=_age; // 如果_age 没定义的话 编译器生成

****版本差异 4.5 以上新特性xcode可以不写@synthesize,,没声明的情况下变量 _age 访问的是_age;

//内存管理 retain release 是用引用计数器

//重写

-(void)dealloc{

[super dealloc];

}

[stu retain]//计数器+1

[stu realease]//计数器-1

[stu retainCount]//计数器数量

Student *st=[[[Student alloc]init]autorelease];//适当的机会去释放

//@class  类名;  在.h用来声明一个类 ,不用包含.h  浪费效率

//内存管理 peroperty 参数的使用/////

@peroperty (retain) 类名* book; //先release 再retian

@peroperty (assign) 类名* book; //默认

@peroperty (nonatomic,retain) 类名 *book; //两个参数

@peroperty (readonly) int book ;//只生成get方法

@peroperty (readwrite) int book ;//默认都生成

// atomic  默认提供多线程安全 nonatomic 反之

-(void)setBook:(Book*)book{

if(_book!=book){

[_book release];

_book =[book retain];

}

静态方法自动释放

Student *st=[[[Student alloc]init]autorelease];//适当的机会去释放

////////////Category分类//////////////////

使用:对类的扩充函数和方法

/////////NSString ///////////////////////

NSString *str=@"hello world";

NSString *str=[[NSString alloc]init]

str=@"hello world";

[str release];

NSString *str=[[NSString alloc]initWithString:@"a string"];

[str release];

NSString *str=[[NSString alloc]initWithUTF8String:@"a string"];

[str release];

NSString *str=[[NSString alloc]initWithFormat:@"a string%i",age];

[str release];

//读取本地文件

NSString *str=[NNString stringwithContentsOfFile:@"c:\1.txt" encoding:NSUTF8StringEncoding error:nil];

//从url读取字符串

NSError *error;

NSURL *url=[NSURL URLWithString:@"www.baidu.com"];

NSString *string =[[NSString alloc]initWithCOntentcOFURL:url encoding:NSUTF8StringEncoding error:nil];

//字符串导入

NSError*error;

NSString *str=@"c:\1.txt"

[str writeToFile:path atomically:(BOOL) endcoding:NSUTF8STringEncoding error:&error];

//NSString 操作

NSString *str=@"FUntion";

NSLog(@"%@",[str uppercaseString]);

NSLog(@"%@",[str lowercaseString]);

//比较

BOOL result=[@"abc" isEqualToString:@"Abc"];

//serch

NSLog(@"以22开头:%i",[str hasPerfix:@"22"]);

hasSuffix   //以什么结尾

NSRange re=[str rangeOfString:@"456"];//出现的位置

//字符串截取

[str substringFormIndex:3]//3到尾部      包括  456

[str substringToIndex:3]//从头部开始到3  不包括三  123

//指定范围

NSRange range=NSmakeRange(2,3);

NSLog(@"%@",[str substringWithRange:range]);

//分割字符串

NSString *str=@"1,2,3,4,5";

NSArray  *array=[str componentsSeparatedByString:@","];

NSLog(@"%@",array);

NSString *str=[array objectAtIndex:0];

//可变字符串

NSMutableString *str=[[NSMutableString alloc]initWithCapacity:10];

[str setString:@"1234"];

//拼接

[str appendString:@"567"];

str[appendFoamat:@"age is %i",27];

//替换

[str replaceCharactersInRange:range WithString:@"no"];

//插入字符串

[str insertString:@"abc" atIndex:2];

//删除

[str deleteCharactersInRange:range];

//////////NSArray  数组类/.////////

//创建一个空的数组

NSArray *array=[NSArray array];

//创建一个元素的数组

array=[NSArray arrayWithObject:@"123"];

//遍历数组

for(int i=0;i

{

id obj=[array abjectAtIndex:i];

NSLog(@"%@",obj);

}

//快速遍历

for(id obj in array){

NSLog(@"%@",obj);

}

//////////////NSMutableArray////可变的数组////

NSMutableArray *array=[NSMutableArray arrarWithObject:@"1"];

[array addObject:@"2"];

[array addObject:@"3"];

///////////////NSDictonary//字典

NSDictionary *dict=[NSDictionary dictonaryWithObject:@"v" forkey:@"k"];

dict=[NSDictionary dictionaryWithObjectAndKeys:

@"v",@"k1",

@"v2",@"k2", nil];

///222/

NSArray *object=[NSArray arraywithObjecrs:@"v1",@"v2",nil];

NSArray *keys=[NSArray arraywithObjecrs:@"k1",@"k2",nil];

NSDictionary *dict=[NSDictionary dictonaryWithObject:object forkey:keys];

///使用方法/

id obj=[dict objectForKey:@"k2"];

[dict writeToFile:pat atomically:YES];

////NSMutableDictonary//可变的字典

NSMutableDictionary *dict=[NSMutableDictionary dictionary];

//add

[dict setobject]

////NSNumber///////

NSNumber *number=[NSNumber numberWithInt:10];

NSMutableArray *array=[NSMutableArray array];

[array addObject:number];

NSNumber *number=[array lastObject];//取出

int num=[number1 intValue];

/////NSValue///////////

CGPoint point=CGPointMake(10,10);

NSValue *value=[NSMutableArray array];

NSMutableArray *array=[NSMutableArray array];

[array addObject:value];//添加

NSValue *value1=[array lastObject];//取出

CGPoiny point1=[value1 pointValue];

/////NSNull////////////

NSNull *n=[NSNull null];

////时间 NSDate/////

NSDate *date=[NSDate date];

//返回时间

date=[NSDate dateWithTimeIntervalSInceNow:10];

//现在开始+10秒

// copy

深拷贝  可变的字符串(深拷贝)   拷贝对象+1           源对象不变 NSMutaString 系列

浅拷贝  不可变的字符串(浅拷贝)  不会产生新对象       对象源+1  NSString

//NSEnmerator 枚举

NSArray *array=[[NSArray alloc] initWithObjects:@"one",@"two",@"there"]

//快速枚举法

for(id obj in array){

NSLog(@"%@",obj);

}

//使用i值遍历

NSUInteger length=[array count];

obj=[array objetcAtIndex:2];

NSInter i;

for(i=0;i

NSLog(@"%@",[array objectAtIndex:i]);

}

//可变数组   NSMutableArray

NSMutableArray *array=[[NSMutableArrat alloc]init]

[array addObject:@"one"];

[array addObject:@"two"];

NSLog(@"%@",array);

////NSDicttionary

NSDicttionary *dict=[[NSDictionary alloc]initWithObjectsAndKeys:@"one",@"1",@"two",@"2"];

//快速

for(id obj in dict){

NSLog(@"%@",obj);

}

//用法

NSString *str=[dict objectForKey:@"1"];

NSLog(@"%@",str);

NSMutableDictionary *dict=[[NSMutableDictionary alloc]init];

[dict setObject:@"one" forKey:@"1"];

[dict setObject:@"two" forKey:@"2"];

///NSInterger a=9

NSnumber *inter=[[NSNumber alloc]initWithInt:5]

NSnumber *inter=[[NSNumber alloc]initWithFloat:3.14f];

//集合 NSSet

NSSet *set=[NSSet alloc] initWithObjects:@"one",@"two",nil];

//NSValue NSNumber的父类

NSString *str=@"hello world";

NSData *data=[str dataUsingEncodeing:NSUTF8StringEncoding];

NSString *newstr=[NSSTring alloc]initWIthData:data encoding:NSUTF8STringEncoding];

//copy 和MutableCopy  可变的字符串

用法 把一个不可变的字符串变成可变的字符串

copy:拷贝 不可变

MutableCopy:不可变

你可能感兴趣的:(OC总结)