//输出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:不可变