您现在所在的位置:主页 > www.907788.com >

ios js 保存到相册

发布日期:2019-10-08 09:39   来源:未知   阅读:

  国庆后lucio开始由Android开发转做iOS开发了,在这之前lucio可是什么苹果产品都没用过的小白,这里po一下小白的iOS开发学习历程,包括看的书、视频、文章,看看lucio如何从小白快速(并不快┓(´∀`)┏其实)入门iOS开发的。

  《Objective-C基础教程》,很好。这里整理下后面几章的学习笔记,方便复习。

  这个公开课每个iOS版本都有,基本是用一个demo来讲解iOS开发,每个版本的demo都不一样,iOS7是用Objective-C的,我也是看完了才知道,但看iOS8的课程也是能同步用Objective-C完成demo的,两边的方法名称完全一样,只有语法的不同。

  lazy initialization,对于需要判空的,线程不安全的以及自动优化相关的属性需要多加考虑,原因如上。

  CoaoaPods 是一套整体解决方案,我们在 Podfile 中指定好我们需要的第三方库。然后 CocoaPods 就会进行下载,集成,然后修改或者创建我们项目的 workspace 文件,这一系列整体操作。

  相比之下,Carthage 就要轻量很多,它也会一个叫做 Cartfile 描述文件,但 Carthage 不会对我们的项目结构进行任何修改,更不多创建 workspace。它只是根据我们描述文件中配置的第三方库,将他们下载到本地,然后使用 xcodebuild 构建成 framework 文件。然后由我们自己将这些库集成到项目中。Carthage 使用的是一种非侵入性的哲学。

  Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简洁明了 并具有高可读性 而且同时支持 iOS 和 Max OS XMasonry介绍与使用实践

  为了正常显示,使用一个单一的containerView占满全部,然后把所有的subview添加到containerView中。(亲测)

  基于约束的布局是懒触发的,只有在添加了约束的情况下,系统才会自动调用 -updateConstraints 方法,如果把所有的约束放在 updateConstraints中,那么系统将会不知道你的布局方式是基于约束的,所以重写+requiresConstraintBasedLayout 返回YES就是明确告诉系统:虽然我之前没有添加约束,但我确实是基于约束的布局!这样可以保证系统一定会调用 -updateConstraints 方法 从而正确添加约束。

  当block直接或间接的被self持有时,需要weakSelf。其他情况下加weakSelf也没什么问题。

  最近公司扫描App漏洞,提出要给App做代码混淆加固,以提高反编译逆向难度。对于Android应用直接用360安全加固即可;但对于iOS应用,虽然360也提供了免费的加固方法,但前提是项目的

  设置为NO,并且是本地部署的线安全加固iOS是收费的,收费标准是30万/年。其他的一些平台也是收费的。所以只能考虑自己去做了。

  混淆原理 : 代码编译阶段将符号(方法名、属性名等)替换成随机生成的字符串

  其中confuse.sh脚本文件是最重要的,是用来在程序编译的时候将func.list中的方法名替换成随机生成的字符串,并且保存在CodeObfuscation.h中。其脚本为:

  CodeObfuscation.h本身是一个空头文件,在编译过后会生成func.list添加属性和方法对应生成的随机字符串。下图是编译后CodeObfuscation.h的内容:

  结果可见,CodeObfuscation.h中的生成的随机字符串和真正打印出来的并不一致,这是因为每次运行时,CodeObfuscation.h都会重新生成新的随机字符串,这时替换属性和方法名的是上一次生成的随机字符串。

  添加了收集方法的脚本后,我们不需要再手动的去添加方法到func.list中了。程序编译后会自动将hj_开头的方法添加到func.list中。

  前面分析了一通iOS事件的分发,主要介绍了事件如何找到处理的view,又是如何按照responderchain逐级传递的。这篇文章主要介绍iOS事件的拦截以及特殊处理。

  对于我们普通人来说,iOS辅助功能可能用的并不多,但是对于残障人士如视力或者听力有缺陷的人来说,iOS辅助功能就显得非常人性化了。下面简单来谈谈有哪些iOS辅助功能。1.Voiceover(1)。VoiceOver屏幕阅读器让你即使无法看清屏幕,也能够在iOS设备上操作和互动。(2)。有了VoiceOver,你可以在屏幕上手写文字,并将其转换为邮件、备忘