iOS Objective开发基础知识点总结(持续更新...)

1、iOS APP 启动流程

1.进入main函数,设置AppDelegate称为函数的代理
2.加载完成[AppDelegate application:didFinishLaunchingWithOptions:]
3.创建window窗口
4.激活显示[AppDelegate applicationDidBecomeActive:]
5.当点击home键
[AppDelegate applicationWillResignActive:];
[AppDelegate applicationDidEnterBackground:];
6.点击APP图标启动程序
[AppDelegate applicationWillEnterForeground:]
[AppDelegate applicationDidBecomeActive:];

2、UIViewController 生命周期(纯代码创建)

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
- (instancetype)init
- (void)loadView
- (void)viewDidLoad
- (void)viewWillAppear:(BOOL)animated
- (void)viewWillLayoutSubviews
- (void)viewDidLayoutSubviews
- (void)viewDidAppear:(BOOL)animated
- (void)viewWillDisappear:(BOOL)animated
- (void)viewDidDisappear:(BOOL)animated
- (void)dealloc

3、线程

// 阻塞主线程
[NSThread sleepForTimeInterval:0.5];
// 开启子线程
dispatch_async(dispatch_get_global_queue(0, 0), ^{
	// 耗时操作
});
dispatch_async(dispatch_get_main_queue(), ^{
	// 回主线程,更新UI操作
});

4、解决多个控件同时响应事件的问题

[[UIView appearance] setExclusiveTouch:YES];

5、打开其他应用

// 所有的打开方式
if ([[UIApplication sharedApplication] canOpenURL:URL] == YES) {
	if (@available(iOS 10.0, *)) {
		[[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];
	} else {
		[[UIApplication sharedApplication] openURL:URL];
	}
} else {
	// 打开失败
}
// 打开浏览器
NSURL *URL = [NSURL URLWithString:@"http://www.baidu.com"];
// 拨打电话
NSURL *URL = [NSURL URLWithString:@"tel:%13888888888"];
// 跳转APPStore
NSString *APPID = @""; // 10位数字
NSString *URL = [@"itms-apps://itunes.apple.com/app/id" stringByAppendingString:APPID];
// 跳转APPStore评价
NSString *URL = [@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id==" stringByAppendingString:APPID];
// 打开其他非系统应用需要添加系统白名单,在Info.plist中添加字段:LSApplicationQueriesSchemes,类型为Array,然后在Array中添加要打开的应用名
// 常用 APP 的 Url Scheme 前缀:QQ mqq://、微信 weixin://、支付宝 alipay://等

6、

在iOS中的指令集有:armv7、armv7s、arm64、i386、x86_64,其中 armv7、armv7s、arm64 是ARM处理器的指令集,i386、x86_64 是Mac处理器的指令集。
指令集支持的设备如下:
arm64:5s之后的设备
armv7s:5, 5c
arm7:4, 4s
i386:模拟器32位
x86_64:模拟器64位

7、设置pageControl选中和未选中的图片

[self.pageControl setValue:[UIImage imageNamed:@"Launch_pink"] forKeyPath:@"_currentPageImage"];
[self.pageControl setValue:[UIImage imageNamed:@"Launch_grey"] forKeyPath:@"_pageImage"];

8、安全性问题
8.1、密码安全:密码传输的过程可以采用加密算法;
8.2、通讯协议安全:可以传输二进制流,比JSON格式小很多;
8.3、支付安全:从苹果拿到支付结果之后需要到自己的服务器二次验证支付结果;
8.4、本地文件安全:需要进行混淆和加密;
8.5、本地数据安全:重要数据存储到keychain中;
8.6、源码安全:核心底层代码可以用C来实现,复用且安全;
在这里插入图片描述在这里插入图片描述
9、常用block声明定义

// 类型定义block
typedef void (^Result)(NSString *param);
// 属性声明block
@property (nonatomic, weak) void(^Result)(NSString *param);
// 参数中带block
- (void)functionWithOwner:(UIViewController *)owner result:(void (^)(NSString *param))result;

10、开发者账号

个人账号($99)
功能:可以真机调试,打包测试,程序发布
优点:申请速度快,给钱就行,1-3个工作日即可
缺点:
1、iTunes查看到的是个人信息,无法间接为公司做宣传
2、无法创建管理自己的开发团队

公司账号($99)
功能:可以真机调试,打包测试,程序发布
优点:
1、iTunes可以查看企业信息,间接为公司做宣传 
2、可以创建和管理自己的开发团队
缺点:
1、申请复杂,需要”邓白氏”认证
2、申请周期比较长(连同”邓白氏编码”申请,最好准备30天左右时间)

企业账号($299)
功能:可以真机调试,打包测试
优点:
1、可以在企业内部随意安装到苹果设备,不需要经过AppStore审核
2、可以创建和管理自己的开发团队
3、版本更新迭代比较快,不需要经过审核
缺点:
1、申请复杂,需要”邓白氏”认证
2、申请周期比较长(连同”邓白氏编码”申请,最好准备30天左右时间)
3、不能使用此证书将App发布到AppStore

11、计算cell相对于tableView父视图的位置

CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath];
CGRect rect = [tableView convertRect:rectInTableView toView:[tableView superview]];

12、真机的SDK如何在模拟器上跑起来?
顶部工具栏->File->Project Setting,按照画框的部分修改,Xcode会自动编译一份模拟器使用的SDK;
在这里插入图片描述
13、单纯设置 UISwitch 的 frame 值没办法改变其大小,可以通过 CGAffineTransform 进行缩放

CGAffineTransform scale = CGAffineTransformMakeScale( 0.6, 0.6);
switch.transform = scale;

14、开发支付的过程中,没有收到服务器返回的支付成功的回调之前,需要持久化保存支付凭证,用于应对网络异常、程序退出、崩溃之类的问题,可以恢复重试

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值