iOS面试必备
发表于|更新于
|浏览量:
备忘
- 内存管理
- 推送原理
- viewController的生命周期,app的生命周期
- 事件响应链与传递链
- 数据库语句、CoreData
- 多线程
- Runtime
- Runloop
- 动画
- git、SVN
- 自动布局的实现,Masonry
- ReactiveCocoa
文章作者: 今是昨非
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 今是昨非的博客!
相关推荐
2026-07-20
用了 AI 还在重复踩坑?该升级的不是提示词,是你的认知
用了 AI 还在重复踩坑?该升级的不是提示词,是你的认知背景几个版本连着出了事。 这事本身不稀奇——做开发的谁没在线上翻过车。稀奇的是:我当时已经在用 AI 写代码了。 按理说,AI 帮我分析需求、生成方案、自检影响范围,出错概率应该比纯手写低才对。可现实是,我用着 AI,照样连着把同一类 bug 送上了线。 那一刻我意识到一件事:问题不在 AI 写错了什么,而在我用 AI 的方式,没有让我真正”升级”。 一个反直觉的事实:AI 不会自动消除你的盲区我们容易有个错觉:有了 AI,等于身边坐了个永不疲倦的高级工程师,那重复犯错的概率应该趋近于零。 但连续三个版本都漏了同类问题之后,我开始怀疑这个假设。 AI 确实能补全我知识的缺口。但它补全的方式,是顺着我的指令、我的上下文、我对问题的定义来补全。如果我对”这次改动的风险”本身就有盲区,AI 会非常体贴地沿着这个盲区继续往下写——它不会主动跳出来质疑你的前提。 换句话说,AI 放大的是你已有的工作方式,而不是自动修复你的工作方式。 你的流程有个洞,AI 只会帮你更快地把东西填进洞里。 所以重复犯错这件事,在 AI 时代有了全新...
2015-11-17
iOS开发知识点2——登陆界面
iOS开发知识点2——登陆界面 按钮的实时响应:登陆的时候,需要当用户有输入时按钮才能响应(可点击),如果有一个输入框为空,则按钮不可响应。以前我以为用的是textfield的代理方法直接判断,后来发现那样不好。有另一种方法 12345678910111213141516171819// 首先给textfield添加addTarget方法,注意最后的controlEvents是EditingChanged[self.accountTextField addTarget:self action:@selector(handleTextDidChange:) forControlEvents:UIControlEventEditingChanged];[self.passwordTextField addTarget:self action:@selector(handleTextDidChange:) forControlEvents:UIControlEventEditingChanged];// 然后实现这个方法- (void)handleTextDidChange:(i...
2022-03-29
Xcode 13.3 Archive 失败
背景升级Xcode 13.3之前,Debug 和 Archive 都没问题;升级 Xcode 13.3之后,Debug 没问题,Archive 就报错。错误信息是error: Abort trap: 6 (in target 'ZLPhotoBrowser' from project 'Pods'),于是提了个 issue,目前已解决。 解决方案是: 123"You can work around this issue by replacing UI_USER_INTERFACE_IDIOM() with UIDevice.current.userInterfaceIdiom. 这里记录分享一下,如果遇到同样问题的,可以搜一下,看是否同样是因为UI_USER_INTERFACE_IDIOM()。
2026-02-05
半天通过 AI 实现切换APP中广告 SDK
背景现有的 APP 中广告 SDK 由于某些原因又被封的风险,所以需要紧急切换一个平台,从 AppLovin 切换到 TopOn。按照经验,需要做的事情是:找出现有项目中原 SDK 的使用,然后删除,然后替换为新 SDK,然后重新编译,然后测试SDK的功能。整个流程预估要 3、4 天不过分吧。但是通过 AI 半天解决了,下面分享一下是如何实现的。 实现第一步首先分析问题,目标是切换广告 SDK,AppLovin 切换到 TopOn;所以第一步我让 AI: 分析下项目中涉及到AppLovin的代码,分析下是如何使用的,如果要切换为其他 SDK,给出步骤和建议 由于项目中使用 AppLovin 的激励视频、横幅、插屏这三类,使用的地方也散落在项目中各个地方,所以AI会给出必须改动的具体文件和内容。 AI 回复中的广告层抽象,让我想起来之前看 Flutter 架构时,看到过的Service 层封装,对外暴露统一的Service,Service的内部可以是本地 Mock 数据、数据库、网络请求数据,这样做的好处就是,业务调用的地方统一,不需要每次都修改调用的地方,只需要封装好内...
2021-05-06
iOS APP添加桌面快捷方式
iOS APP添加桌面快捷方式背景新接到一个需求,需要APP内的某些功能,能够把入口添加到桌面,点击桌面到入口可以直接跳转APP对应界面(类似于下面这张示例图),于是就做了一番调研。 其实很多APP目前都已经实现了类似的功能,比如支付宝、云闪付等等,其中的每一个独立功能都可以单独添加到桌面,所以网上有很多实现的方法,笔者做的是整理和试错。 实现首先,添加到桌面功能的操作流程是: 客户端打开APP -> 进入到对应到APP功能模块 -> 点击添加快捷方式到桌面按钮 -> 跳转浏览器,并加载引导页面,点击分享,选择添加到主屏幕 -> 从主屏幕点击刚刚添加到快捷功能,跳转到APP的对应界面。 根据笔者了解到的信息,目前实现这种功能,大致可以分为两种实现方式: 方法一:H5提供网页,每个不同的功能提供不同的网页,服务端返回这些网页的URL,客户端配置打开URL Scheme,然后使用Safari直接加载URL,加载的网页中根据进入方式的不同,自动重定向打开APP的URL Scheme。 方法二:H5提供通用的网页,客户端替换通用网页中的内容,比如...
2022-04-21
Algorithem_Populating Next Right Pointers in Each Node
Algorithem_Populating Next Right Pointers in Each NodeYou are given a perfect binary tree where all leaves are on the same level, and every parent has two children. The binary tree has the following definition: 123456struct Node { int val; Node *left; Node *right; Node *next;} Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL. Initially, all next pointers are set to NULL. Example 1: 12Input: root...