iOS 开发基础工具 | 青训营笔记
这是我参与「第四届青训营」笔记创作活动的的第2天
1 框架 Frameworks
1.1 基本认识
在软件开发的领域里,Frameworks指的是一个通用的,可复用,具备特定功能的软件或是环境,
他可能包含了代码库,API文件,或是一些工具的集合体。
Frameworks的提供方可能是系统,可能是其他开发者,或是软件开发公司,而他的用途呢就是支撑软件开发者能更容易更方便的达到某个程序功能
1.2 系统框架分层
处于上层的框架会去依赖底层的框架,但底层的框架它不会有依赖上层的情况
1.2.1 Core OS
是苹果提供的最靠近硬件的框架,通常情况下,这些功能不会直接应用于我们的应用程序,而是应用于其他框架。但是,在直接处理安全事务或和其他设备通讯的时候,则必须要应用到该层的框架。
1.2.2 Core Service
提供应用程序所需要的基础系统服务的核心服务,最基础的是Foundation框架
1.2.3 Media层
是提供包括图行,音频,视频相关的技术支持
1.2.4 CocoaTouch
大部分框架都与界面有关,其中包含了开发App的最重要的框架之一 UIKit,UIKit提供了大量的UI控件,例如按钮, Label,滚动列表,宫格视图,以及App的页面UIViewController 和 UIView
一个App的使用介面,跟页面之间的跳转都离不开UIKit
2 Foundation框架
Foundation框架为 App和其他框架提供了基础的能力,包括数据存储持久化,文本处理,日期时间计算,排序筛选,还有网路。
引入头文件:#import <Foundation/Foundation.h>
2.1 为对象分配内存空间与初始化
NSString *str = [[NSString alloc]init];
首先调用的静态方法alloc
系统会为这个对象分配内存并返回一个空的实例,
之后在调用init
实例方法进行初始化
NSString *str = [NSString new];
或者另外一个用法 new ,它等于 alloc + init
2.2 类关系判断
// NSObject.h
/** 获取当前对象的类 */
- (Class)class;
/** 获取当前对象的类 */
- (Class)superclass;
/** 判断对象是否是给定类或给定类子类的实例 */
- (BOOL)isKindOfClass:(Class)aClass;
/** 判断对象是否是给定类的实例 */
- (BOOL)isMemberOfClass:(Class)aClass;
/** 判断对象是否遵从给定的协议 */
- (BOOL)conformsToProtocol:(Protocol *)aProtocol;
3 数据类型
3.1 NSString 字符串
NSString是在Objective-C语言里最常用的专门处理字符串的类,
NSString *str = @"hello";
// 获取字符串的长度
NSUInteger length = [stringObject5 length];
// 截取字符串,从索引位置到结尾
NSString *subStr1 = [str substringFromIndex:1];
// 截取字符串,从开始到索引位置
NSString *subStr2 = [str substringToIndex:3];
// 截取字符串,从索引开始,取长度个数组成的字符串
NSRange range = NSMakeRange(1, 2);
NSString *subStr3 = [str substringWithRange:range];
3.2 NSArray 数组
创建数组:
NSArray *arr1 = [NSArray array];
NSArray *arr2 = [[NSArray alloc] init];
NSArray *arr3 = @[@"iOS", @"Android", @"Server"];
NSArray *arr4 = [NSArray arrayWithObjects:@"iOS", @"Android", @"Server"];
限制存放对象:
NSArray<NSNumber *> *numberArrayObject = @[@(1), @(-1), @(3.3)];
可变数组 NSMutableArray
- (void)addObject:(ObjectType)anObject;
- (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index;
- (void)removeLastObject;
- (void)removeObjectAtIndex:(NSUInteger)index;
// 新增任意对象
[mutableArrayObject addObject:@"StringObject1"];
// 在指定下标添加对象
[mutableArrayObject insertObject:@(0) atIndex:0];
// 批量添加
[mutableArrayObject addObjectsFromArray:@[@"StringObject2", @(1)]];
// 移除末尾
[mutableArrayObject removeLastObject];
// 删除指定下标
[mutableArrayObject removeObjectAtIndex:0];
// 移除全部
[mutableArrayObject removeAllObjects];
3.3 NSDictionary
NSDictionary字典的访问方法跟NSArray数组类似,不过把访问的下标从整数替换成了字符串
NSMutableDictionary *mutableDictionary = [[NSMutableDictionary alloc] initWithDictionary:@{
@"key1": @"value1"
}];
//setObject:(setValue:)forKey: (设置某Key对应值)
[mutableDictionary setObject:@"value2" forKey:@"key2"];
[mutableDictionary setValue:@"value3" forKey:@"key3"];
mutableDictionary[@"key4"] = @"value4";
//removeObjectForKey: (移除某一个key对应的元素)
[mutableDictionary removeObjectForKey:@"key2"];
//removeAllObjects (移除所有元素)
[mutableDictionary removeAllObjects];
4 小结
这节课讲了比较重要的Foundation框架与基本数据类型,NSString最为基础与常见,NSArray与NSDicytionary在开发中起到非常重要的作用,许多时候都要用到。