慕课IOS相关课程笔记

OC面向对象

  • 类内调用成员变量 不是属性 属性时get set方法 类外调用成员变量用指向符号
  • 减号对象方法 用对象调用
  • 加号类方法 用类名调用 方法中不能调用成员变量 只能调用静态变量
  • 返回值类型 id 万能类型 instancetype 当前类类型 初始化方法两种类型都行其他用后者
  • 输入init 可自动补全重写 初始化方法格式
  • 成员变量默认访问修饰符 受保护 package 框架内受保护 框架外私有
  • 方法没有访问修饰符 声明后可在类外调用 可继承s elf调用 不声明直接实现不可在类外调用不能被继承
  • 没有多继承 java使用接口 oc使用协议实现
  • oc不支持方法重载 重写用super 调用父类方法 self 调用当前类方法
  • 可用父类变量接收子类对象

Foundation框架

字符串

  • 实例化创建字符串需要自己释放内存 直接赋值不需要自己释放
  • 格式化字符串 stringWithFormat 拼接字符串 strigByAppendingString lowercaseString uppercaseString 大小写转换 判断前缀 hasPrefix 判断后缀 hasSuffix 判断字符串是否相同 isEqualToString 比较字符串 NSComparsionResult
BOOL hasSuffix=[str hasSuffix:@".com"];

按照指定字符分割字符串

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

按照范围截取字符串

NSRange range=NSMakeRange(1,5);
NSString *str=[str substringWithRange:range];
NSLog(@"str=%@",str);

从某一位开始截取后面字符串

NSString *str=[str substringFromIndex:2];

从开头截取到某一位

NSString *str=[str substringToIndex:8];

将字符串拆分

for(int i=0;i<[str length];i++)
{
	NSLog(@"%c",[str characterAtIndex:i];
}

查找

  • 查找指定字符串位置
NSString *str=@"ab cd ef ab";
NSRange range=[str rangeOfString:@"ab"];
NSLog(@"range.location:%ld range.length%ld",range.location,range.length);
//正向查找 只能查找第一个匹配的

替换

  • 替换某个范围内容
NSString str1=[str stringByReplacingCharactersInRange:NSMakeRange(0,5) withString:@"hello"];
  • 用指定字符串替换
NSString *str1=[str stringByReplacingOccurrencesOfString:@" " withString:(NSString*)]

读取文件
文件来源:本地文件;网络文件
路径类 NSURL
字符串和路径转换

NSString *str=@"www.baidu.com";
网络路径
NSURL *httpURL=[NSURL URLWIthString:str];
本地路径
 NSString *fileURL=[NSURL fileURLWithPath:str]; 

读取网络文件

NSString*httpStr=[NSString stringwithContentsOfURL:httpURL encodig:NSUTF8StringEncoding error:nil];

读取本地文件

NSString *fileStr=[NSString stringwithContentsOfFile:@"/Users/.../.txt" encoding:NSUTF8StringEncoding error:nil];

写入文件

NSString *str=@"hello";
BOOL isOk=[str writeToFile:@"/Users/.../.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
if(isOk) NSLog(@"文件写入成功");

可变字符串

可变字符串是字符串子类
实例化

字符串范围是10 可以提升性能 长度可以超越10
NSMutableString *str=[[NSMutableString alloc]init]withCapacity:10];
[str setString:@"Hello"];
str=@"Hello";只能给普通字符串赋值

可变字符串方法

  1. 追加字符串
[str appendingString:@" world"];
int a=10;
[str appendingFormat:@"-*d",a]; 追加格式化字符串
  1. 替换字符串
NSRange range=[str rangeOfString;@"world"];
[str replaceCharactersInRange:range withString:@"IOS"];
  1. 插入字符串
[str insertString:@"A" atIndex:6];

4.删除字符串

 NSRange range=[str rangeOfString;@"Aios"];
 [str deleteCharactersInRange:range];

数组

OC的数组可以存储不同类型对象
OC数组只能存储对象 基本类型int char double 不能直接存储 要转化成对象 保存的为对象指针,占用空间较少
不可变数组实例化时必须赋值

NSArray *array=[[NSArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",nil];

数组长度

int count=(int)array.count;

判读数组中是否包含对应对象

BOOL isHave=[array containObject:@"2"];
if(isHave) 

取得数组中最后一个首个元素

NSString *str=[array lastObject];
str=[array firstObject];

取得数组中下标为n的元素

str=[array objectAtIndex:3];

打印元素对应下标 若元素不存在 打印-1

int index=(int)[array indexOfObject:@"b"];

数组的遍历

  1. 基本for循环
for(int i=0;i<array.count;i++)
{
	NSString *str=[array objectAtIndex:i]
	NSLog(@"str=%@",str);
}

数组中有自定义对象

Person *p=[[Person alloc]init];
p.personName=@"张三";
NSArray *array=[[NSArray alloc]initWithObjects:@"a",@"b",p,@"c",nil];
for(int i=0;i<array.count;i++)
{
	NSString *str=[array objectAtIndex:i]
	NSLog(@"str.len",str.length); 有的方法只有字符串,自定义对象p没有
}
  1. 快速枚举
    使用快速枚举需要数组中数据类型一致
for(NSString *str in array)
{
NSLog(@"str=%@",str); 有自定义对象显示地址
}
  1. 迭代器

可变数组

实例化

NSMutableArray *array=[[NSMutableArray alloc]init];
Person *p1=[[Person alloc]initWithName:@"张三" ];
Person *p2=[[Person alloc]initWithName:@"李四" ];
Person *p3=[[Person alloc]initWithName:@"王五" ];

添加元素

 NSArray *personArray=[[NSArray alloc]initWithObjects:p2,p3,nil];
 NSMutable*array=[[NSMutableArray alloc]init];
  [array addObject:p1];
 将personArray当作对象添加到array中
 [array addObject:personArray];
 把personArray中所有元素添加到array数组中
 [array addObjectsFromArray:personArray];

删除元素

  • 删除所有元素
[array removeAllObjects];
  • 删除最后一个元素
[array removeLastObject];
  • 删除指定元素
[array removeObject:p2];
NSLog(@"%@",array);
  • 删除指定下标元素(注意元素个数 )
[array removeObjectAtIndex:2]; 
  • 交换元素位置
[array exchangeObjectAtIndex:0 withObjectAtIndex:1];

字典

  • 存储的内存不连续
  • key和value对应 kvc键值编码
  • @{键值} 代表字典

声明字典

NSDictionary *dict=[NSDictionary dictionaryWithObject:@"1" forKey:@"a"];

常用创建方式

NSDictionary *dict=[NSDictionary dictionarywithObjects:[NSArray arrayWithObjects:@"1",@"2",@"3",nil] forKeys:[NSArray arrayWIthObjects:@"a",@"b",@"c" nil]];

NSDictionary *dict=@{@"a":@"1",@"b":@"2"};
int count=(int)[dict count];

根据键取得值

NSString *value=[dict valueForKey:@"b"];
NSString *value=[dict objectForKey:@"b"];

NSArray*allValues=[dict allValues];取得字典中所有键值对的值
NSArray*allKeys=[dict allKeys];取得字典中所有的键

NSArray *str=[dict objectsForKeys:[NSArray arrayWithObjects:@"a",@"b",@"d",nil]notFoundMaker:@"not fount"]; 通过多个key找到多个对应的值

遍历字典
通过key找到每个值

for(NSString *key in dict)
{
	NSLog(@"%@=%@",key,[dict objectForKey:key]);
}

迭代器枚举

NSEnumerator *en=[dict keyEnumerator];
id key=nil;
while(key=[en nextObject])
{
	NSLog(@"key-%@",key);
}

可变字典

声明

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

添加键值对

[dict setObject:@"1" forKey:@"a"];
[dict setObject:@"2" forKey:@"b"];

删除键值对

[dict removeAllObjects];
[dict removeObjectForKey:@"b"];删除指定key对应的键值对
[dict removeObjectsForKeys:[NSArray arrayWithObjects:@"a",@"b",nil]]删除多个keys对应的键值对

字典是无序的 没有交换顺序的方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值