2021新出iOS开发程序员学习路线,涵盖大部分iOS知识体系【不会没收藏吧!】

【学习路线】iOS开发从入门到上架:打造你的第一个App 本笔记为iOS开发者提供系统学习路径,从基础准备到进阶开发。学习需配备Mac电脑、Xcode和Apple开发者账号。第一阶段学习Swift语言基础(1-2个月),包括语法、函数、面向对象等核心概念。第二阶段掌握UIKit框架(2-3个月),学习视图组件、自动布局和导航控制器。第三阶段重点数据处理与网络编程(2-3个月),涵盖UserDefaults、Core Data和URLSession等核心技术。每个阶段都包含代码示例和实践项目建议,如计算器程序、笔记应用等,帮助开发者循序渐进 阅读详情

这个栏目将持续更新--请iOS的小伙伴关注!

整理不易,如果您觉得还不错,麻烦在文末 “点个赞” 或者 评论 “Mark”,谢谢您的支持

1、字符串常用方法

字符串截取
NSString *strSub = [str substringFormIndex:2];

NSString *strSubT = [str substringToIndex:2];

NSString *strSubR = [str substringWithRange:range];

字符串替换

NSString *newStr = [str stringByReplacingOccurencesOfString:@"ll" withString:@"al"];

编码,把UTF8编码的字符串编码成URL中可用的字符串

url_cn = [url_cn stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

字符串转数组

NSArray *array = [str componentsSeparatedByString:@","];--分隔符

数组转字符串

NSString *str = [array componentsJoinedByString:@","];--分隔符

 

字符串转字典

 

NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];

NSError *err;

NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData

                                options:NSJSONReadingMutableContainers

                                                           error:&err];

字典转字符串

 

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];

内容总览:

下面我就给大家展示当下最热门的知识点内容!

 

 

·iOS面试题答案PDF文集

最新 初级iOS 面试题
最新 中级iOS 面试题
最新 高级iOS 面试题
《BAT面试资料全集》
《BAT大厂常问iOS面试题》
《2021年面试真题》
《iOS开发面试题200道-面试问答篇》
《iOS开发笔试题600道-笔试手写篇》
《iOS中级到高级面试题完整版》

2、数组

数组替换

[_dataSource replaceObjectAtIndex:1 withObject:recentArray];

数组倒序

 

NSArray *array = @[@1, @20, @3, @10, @2];//排序后到新数组里
NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(NSNumber* obj1, NSNumber* obj2) {
 if ([obj1 intValue] > [obj2 intValue]) {
     return NSOrderedDescending;
 } else { 
     return NSOrderedAscending;
 } 
}];

3、浅谈iOS开发中方法延迟执行的集中方式

1》performSelector方法

 

- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay;

2》NSTimer定时器

 

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo;

3》NSThread线程的sleep

 

+ (void)sleepForTimeInterval:(NSTimeInterval)ti;

4》GCD

 

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

});

4、写一个完整的代理,包括生命、实现

 

//创建
@protocol MyDelegate
@required
-(void)eat:(NSString *)food;
@optional
-(void)run;
@end
//声明.h
@interface person:NSObject<MyDelegate>
@end
//实现.m
@implementation person
-(void)eat:(NSString *)food{
}
-(void)run{
}
@end

5、BAD_ACCESS在什么情况下出现

这种问题在开发时经常遇到,原因是访问了野指针,比如访问已经释放的对象的成员变量或者发消息、死循环等。

6、lldb(gdb)常用的控制台调试命令

1》p 输出基本类型,是打印命令,需要指定类型,是print的简写

 

p (int)[[[self view] subviews] count]

2》po 打印对象,会调用description方法,是print-object的简写

po [self view]

3》expr 可以在调试时动态执行制定表达式,并将结果打印出来。常用于在调试过程中修改变量的值。

4》bt 打印调用堆栈,是thread backtrace的简写,加all可打印所有的thread的堆栈。

5》br l 是breakpoint list的简写。

7、你一般是怎么用Instruments的?

Instruments里面工具很多,常用的有:

1》Time Profiler:性能分析

2》Zoombies:检查是否访问了僵尸对象,但是这个工具只能从上往下检查,不智能

3》Allocations:用来检查内存,写算法的那批人也用这个来检查

4》Leaks:检查内存,看是否有内存泄漏

8、iOS常用的数据存储方式有哪些?

 

数据存储有四种方案:NSUserDefault、KeyChain、file、DB。 
其中File有三种方式:plist、Archive(归档)
DB包括:SQLite、FMDB、CoreData

9、Runtime可以做什么事情

1》获取类里面的所有成员变量

2》为类动态添加成员变量

3》动态改变类的方法实现

4》为类动态添加新的方法

10、WKWebView与UIWebView的比较替换

相比于UIWebView的优势

1》在性能、稳定性、占用内存方面有很大提升

2》允许JavaScript的Nitro库加载并使用(UIWebView中限制)

3》增加加载进度实行:estimatedProgress,不用再自己写进度条了

4》支持了更多的HTML属性。

11、iOS常见加密方式

1》base64加密:基本原理是原本是8个bit一组表示数据,改为6个bit一组表示数据,不足的部分补零,每两个0用一个 = 表示;用base64编码之后,数据长度会变大,增加了大约1/3左右;可进行反向解密;编码有个非常显著的特点,末尾有个 = 号

2》MD5加密:把任意一个长度的字符串换成一定长度的十六进制的大整数

3》AES加密

4》RSA加密

12、drawRect

1》我们只能在继承了UIView的子类中通过重写drawRect方法来绘制图形

2》如果需要绘制图形的子类直接继承自UIView,则子类的drawRect中不需要调用父类方法[super drawRect:rect];。如果子类继承自其它继承UIView的view类,则drawRect方法中需要调用父类方法[super drawRect:rect];。

3》drawRect方法不能手动直接调用,我们可以通过调用其它方法来实现drawRect方法的调用。如:在子类初始化时调用- (instancetype)initWithFrame:(CGRect)frame方法,且frame不为CGRectZero时。

4》我们可以调用setNeedsDisplay()方法或setNeedsDisplayInRect方法,但是该方法不会自己调用drawRect方法,而是会标记视图,并在下一次循环更新的时候让视图通过drawRect来进行重绘,前提是rect不为CGRectZero。

13、iOS开发中的锁

1》临界区:指的是一块对公共资源进行访问的代码,并非是一种机制或者算法。

2》互斥锁:是一种用于多线程编程中,防止两条线程同时对同一个公共资源进行读写的机制,该目的通过将代码切片成一个一个的临界区而达成。

3》自旋锁:是用于多线程同步的一种锁,线程会反复检查锁变量是否可用。由于线程在这一过程中保持执行,因此是一种忙等待。一旦获取了自旋锁,线程会一直保持该锁,直至显示释放自旋锁。自旋锁避免了进城上下文的调度开销,因此对于线程只会阻塞很短时间的场合是有效的。

4》读写锁:是计算机程序的并发控制的一种同步机制,也称“共享-互斥锁”、多读者-单写者锁,用于解决多

iOS开发学习路线 +技巧整理 其实自学编程并不难,自学iOS移动开发也不是很难。   iOS拥有强大的开发工具IDE Xcode,Xcode是开发OS X 和 iOS 应用程序的最快捷的方式。Xcode 具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。简单的界面构建器Interface Builder(简称IB)通过鼠标拖拽就可以快速构建APP UI,甚至完全不需要真机调试,拖什么样,真机就表现成什么样。  ... 阅读详情

相关推荐

iOS开发从入门到精通 [2021版]

【课程特点】 学习iOS开发,请选本套课程,理由如下: 1、233节大容量课程:包含了iOS开发中的大部分实用技能; 2、创新的教学模式:手把手教您iOS开发技术,一看就懂,一学就会; 3、贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标; 4、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间;   【课程内容】 本视频教程拥有233节课程,包含iOS开发的方方面面:iOS开发基础理论知识、 视图、视图控制器、多媒体、数据处理、常用插件、信用卡卡号识别、自动化测试、网络访问、多线程、ShareSDK社会化分享、CoreImage、CoreText、CoreML机器学习、ARKit增强现实、面部检测、Storyboard技巧、关键帧动画、本地通知、陀螺仪相机定位设备、本地化、通过IAP内购实现营利、App上传与审核等超多干货! 

Zynq7020实战:ARM Cortex-A9降频避坑指南(附温度对比测试)

本文详细介绍了如何在Zynq7020平台上对ARM Cortex-A9处理器进行降频优化,以降低功耗并提升系统稳定性。通过分析时钟架构、提供实战操作步骤和温度对比测试数据,帮助开发者有效避免降频过程中的常见问题,实现嵌入式系统的高效能耗管理。

root9的博客 205

从钕铁硼到电机磁钢:用COMSOL玩转新能源永磁体磁场仿真(含3D模型导入技巧)

本文详细介绍了如何利用COMSOL Multiphysics进行新能源永磁体磁场仿真,从基础的单块钕铁硼磁钢建模到复杂的3D电机磁钢组件分析。重点讲解了3D模型导入技巧、辐射环等特殊结构的充磁定义,以及如何通过仿真结果优化磁路设计、评估气隙磁密和退磁风险,为工程师提供了一套高效、精准的有限元仿真解决方案。

2y3u4i5o6p的博客 1037

聚类模型-层次聚类

聚类模型 1、层次聚类 2、原型聚类-K-means 3、模型聚类-GMM 4、EM算法-LDA主题模型 5、密度聚类-DBSCAN 6、图聚类-谱聚类 一、层次聚类 一、聚类理论 ​ 一般来说,聚类是在训练样本的标签信息不知的情况下,学习样本内在的性质和规律,将有限的集合划分成ccc类。根据“方以类聚,物以群分”的思想,类内对象尽可能的相似,...

myazi 6502

104、母线电容设计与选型

母线电容选型,容值不是最关键的,纹波电流和温度才是。很多炸机事故,不是容值不够,而是纹波电流超标导致过热。选电容时,多花点时间算纹波电流,比盲目加大容值有效得多。另外,别迷信进口品牌。国产电容(如江海、艾华)在常规应用里完全够用,价格只有进口的1/3。但高频特性确实有差距,所以高频去耦一定要用薄膜电容。最后,留个调试技巧:用示波器测母线电容两端的电压纹波,同时用电流探头测电容的纹波电流。如果纹波电流波形有尖峰,说明ESL太大,需要并联高频电容。如果纹波电压是低频波动,说明容值不够。

2401_88858637的博客 47

rtpengine 项目

rtpengine 项目

原来45的博客 1789

【问题解决】解决 Python `PermissionError` 权限不足:文件/进程/端口全场景修复

本文总结了Python程序中常见的权限问题及解决方案,包括文件、进程和端口权限错误。文件权限问题通常由文件占用、权限不足或路径错误引起;进程问题多因权限不足或系统限制;端口问题则与端口占用、防火墙或特权端口相关。解决方案提供了详细的代码实现:文件权限管理器类(FilePermissionManager)包含检查权限(check_permission)、修复权限(fix_permission)、安全写入(safe_write)和安全删除(safe_delete)等方法,通过异常处理和临时文件等技术确保操作安全

博客 357

【EB-02】TC397 Tresos 最小工程配置

主要设置McalLibPublishedInformation 参数,会根据ResourceM配置的芯片自动加载。可以看到再工程目录中生成了output文件夹,里面由这些模块生成的头文件,编译脚本和epc文件。如果选择生成swcd,可以生成xxx_Bswmd.arxml给别的工具使用。如果没有Error和Problems就可以点击生成代码。点击工程校验看看工程是否由错误。

libuping2023的博客 324

十.镜头知识之畸变问题

对于理想光学系统,在一对共轭的物像平面上,像的放大率是一个常数。但是对于实际的光学系统,当视场较大或很大时,像的放大率就要随视场而异,这样就会使像相对于物体失去相似性。这种使像变形的成像缺陷称为畸变。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 2123

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: 《iOS开发一起来做面试题》- 每日十道- 打卡 SDWebImage相关面试题
下一篇: “腾讯”,程序员移动开发要达到咋样的水准?想想就可怕!
iOSvv
博客等级 码龄7年 20粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值