1、类是具有公共特征(实例变量)和行为(方法)的事物的抽象,对象是某个类的实例化。
2、万事万物皆为对象。
3.在oc中只有公共实例变量可以在类外使用->访问。
4.面向过程编程和面向对象编程的区别:
5.接口部分:@interface......@end;实现部分:@implementation.......@end
6.创建对象:为对象分配空间,再初始化对象
eg:Stduent *s = [[Studentalloc]init];//alloc是类方法,init是实例方法
7.OC中是使用的消息传递机制[recevermessage];//recever接收者,message:方法(消息)
8.实例变量可见度:
9.设置器:set方法:返回值为空,有一个要传入的形参
访问器:get方法:返回值是对应的实例变量的类型,无形参
10.#import"":导入自己定义的包;#import<>:导入类库中的包,但容易出现循环导入头文件的问题;用@class后的字符串作为类名,但未导入接口内容,不会出现循环嵌套的问题。注意:当几个类在各自的类中要使用其他类的实例变量,则使用@class防止循环嵌套。
11.子类可以继承父类所有的行为和特征。
12.字符串
创建和初始化方法:
一:NSString *str = [[NSStringalloc]initWithString:字符串];
二:NSString *str = [[NSStringalloc]init];
str = @字符串
三:NSString *str =[ NSStringstringWithFormat:@一种格式];
四:NSString *str = [[NSStringalloc]initWithFormat:@一种格式];
五:NSString *str = [NSString stringWithStirng:字符串];
获取字符串长度:NSUInteger length =[str length];返回的是一个无符号的长整型数,用%lu打印
获取子字符串:subStringToIndex、subStringFromIndex、subStringWithRange、
NSRange range =NSMakeRange(3,5);
拼接字符串:stringByAppendingString、stringByAppendingFormat
替换字符串:stringByReplacingOccurrencesOfString: withString、
stringByReplacingCharctersInRange:withString、
字符串相等isEqualToStirng
字符串⽐比较。compare
创建可变字符串:NSMutableString *str = [[NSMutableStringalloc]init];
[strappendString:字符串];
13.数组:OC中数组存储的元素都是对象
获取元素个数:count,返回的是一个长整型的数
根据index获取对象:indexOfArray
14.数值对象:基本数和对像之间的转换
NSNumber *n = [[NSNumberalloc]initWithInt]:将一个整型数转换为对象
[nintValue];//将一个对象转换为int型
NSValue :NSNumber的子类,将结构体和指针进行转换
NSRange range =NSMakeRange(3,5);//定义一个范围
NSValue *value = [NSValuevalueWithRange:range];
总结:可变对象是不可变对象的子类,包含父类的方法,并可以增删改,但可变对象调用了不可变对象的方法,则就有返回值,需要有接收对象。
15.字典:字典是以键值对(key:value)存储的,字典是无序的,键唯一
//字典的字面量
// NSDictionary *dic3 = @{
@"key1":@"value1",//
@"key2":@"value2",//
@"key3":@"value3"};
//获取字典的所有key值
// [dic3 allKeys]; //
获取字典里的所有value值//
[dic3allValues];//
//根据key值修改一个元素//
//修改元素的时候,有key就修改对应的value值,没有的话就添加一个。//
//有则改之,无则添加。
用 setObject forKey
//字典的遍历
//将一个字典中的所有key值放入一个数组中,再通过数组遍历取得每个key值,再通过key值取相应的value值
16.集合:NSSet
随机获取一个元素:anyObject
NSMutableSet *anOther = [NSMutableSetsetWithObject:@"ppija"];
//将接收的set1清空,把anOther中的对象赋给set1
// [set1setSet:anOther];//
NSCountedSet 在set的基础上增加了计数功能
//方法二:
//快速遍历对于字典来说每次获取的都是key值//
for (NSString *str in d){//
NSLog(@"key=%@,value=%@",str,d[str]);//
}
// NSArray *arr = @[@"a",@"b",@"c",@"d",@"e"];
//
17. //枚举器,是一个工具,帮我们从数组中将元素逐个取出//
NSEnumerator*enum1 = [arrobjectEnumerator];//
idobj;//
while (obj = [enum1 nextObject])
{// NSLog(@"正在遍历:%@",obj);//
}// NSLog(@"结束:%@",[enum1nextObject]);//
18.排序:
不可变对象调用:sortedArrayUsingSelector:@selector
可变对象调用:sortUsingSelector:@selector
19.Block语法:调用匿名函数,和函数指针的使用情况相似
(返回值类型)(^block变量)(参数)=^返回值类型(可省略)(参数){执行语句};
sortedArrayUsingComparator:^NSComparisonResult(idobj1, id obj2)
sortUsingComparator:^NSComparisonResult(id obj1,id obj2)
19.NSDate的使用:
20.Category:也叫做分类或类目。类的拓展:为类添加新方法,成为类的一部分
21.Extension:为类添加私有方法或实例变量,只能在类内使用,相当于把声明移到了实现文件中。Extension针对的是⾃己的类,必须有源代码的类
22.Protocal:一套标准(一堆方法),只有.h文件
接受协议的对象实现协议中的方法,协议中默认的是必须完成的方法,@optional是可选择的。
代理:帮你完成一些任务的对象。接收协议的对象,该对象完成协议的方法定义。
协议和代理经常一起使用。