这是我参与「第四届青训营 」笔记创作活动的的第4天
今天是7月26日,青训营的第四天,今天对昨天除iOS系统框架的有关NSObject类的知识进行整理。
NSObject类
NSObeject类是大部分类的根类(root Class),NSObject类没有父类,但遵循NSObject协议。
NSObject类定义了大量适应OC的方法,比如init方法,performSelector方法。
如何查看NSObject的头文件:
1.按着command,点击代码中的NSObject关键字,就会跳转到NSObject.h文件中有关NSObject类的位置。其中有关NSObject的方法定义。
2.按comman+shift+o,在搜索框中输入NSObject.h,查看文件。
分配内存空间和初始化
alloc方法为新对象分配内存空间
init方法初始化对象
创建对象:Student *stu=[[Student alloc] init];或Student *stu=[Student new];(构造了init自定义函数后不能使用new来创建对象)
发送消息(方法调用)
respondsToSelector方法:用于判断对象是否调用方法
- (BOOL)respondsToSelector:(SEL)aSelector;
performSelector方法:调用无参无返回值方法
- (id)performSelector:(SEL)aSelector;
Student *stu=[[Student alloc] init];
if([stu respondsToSelector: @selector(getmyname)])
//判断对象是否调用方法
{
[stu performSelector: @selector(getmyname)];
//调用无参无返回值方法,可调用含参方法
}
else{
NSLog(@"NO GET NAME");
}
//可用于调用私有方法
使用场景:方法是在运行时通过runtime添加的方法(在编译时不存在)或是调用未在@interface中声明的私有方法
类关系判断
获取当前对象的类:- (Class)class;
获取当前对象的父类:- (Class)superclass;
判断当前类是否是给定类的子类:- (BOOL)isKindOfClass:(Class)aClass;
判断对象是否是给定类:- (BOOL)isMemberOfClass:(Class)aClass;
判断对象是否遵从给定的协议: - (BOOL)conformsToProtocol:(Protocol *)aProtocol;
数据类型
NSString:在OC中最常用的专门处理字符串的类,以下为相关的方法
创建NSString:NSString *name=@"cy";(使用@“”)
创建空NSString:NSString *name=[[NSString alloc] init];
获取字符串长度:NSUInteger length = [name length];
获取指定下标的字符:unichar char = [name characterAtIndex:0];
截取从指定位置到末尾的字符串:NSString str = [name substringFromIndex:1];
截取从开始到指定位置到字符串:NSString str = [name substringToIndex:3];
NSArray 数组(不可变)
创建空数组:NSArray *arr=[[NSArray alloc] init];(不能存放基本类型,如需存放需转换成对应类型的对象)
数组中所含元素个数: int count = array.count;
NSMutableArray 数组(可变)
属于NSArray的子类,在NSMutableArray中声明了增删数组元素的方法
添加对象:[stu addObject:@"name"];
指定位置添加元素:[stu insertObject:@(name2) atIndex:0];
两者比较
NSArray:对象数据不会被修改,线程安全,查找性能好
NSMutableArray:对象数据可被修改,线程不安全,查找性能较差
NSDictionary 字典(不可变)
字典是一个基于Key-Value键值对访问的数据类型(类似JAVA当中的map)
NSDictionary *dictionary =@{
@"key":@"value",
@"key2":@"value2"
};
//创建字典对象,可以是多个。
NSUInteger dictionary1Count = [dictionary count];
//通过count方法获取字典中元素的个数
NSObject *getValue = [dictionary objectForKey:@"key"];
id getValueDirect = dictionary[@"key"];
//通过objectForKey获取key对应的value
NSMutableDictionary 字典(可变)
NSMutableDictionary *mutableDictionary = [[NSMutableDictionary alloc] initWithDictionary:@{@"key": @"value" }];
//创建NSMutableDictionary对象
总结
今天主要学习了NSObject类以及NSString、NSArray、NSDictionary的相关知识,对OC语言有了更多的了解。也成功的将所学的知识转换成自己的。希望在以后的学习日子中有更大大进步。