ios 学习之OC语言总结1

自己看视频和书本自学的OC语法  希望进阶ios项目开发

//输出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<array.count;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<length;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:不可变






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值