iOS开发总结
文章平均质量分 72
iOS学堂
转到简书, 给策 。iOS程序员一枚,正在不断的学习进取中,希望结交各位志同道合的朋友,一起学习,共同进步,共创事业 !
展开
-
iPhoneX适配之UI设计、交互设计
苹果近日发布了全新的iPhone X全面屏手机,这也是首款采用OLED屏幕的iPhone手机,它的正面设计被更多人吐槽,iPhone X 的刘海可能是让人又爱又恨的设计。这几天被iPhone X一顿刷屏,不少标题写着“iPhone X 适配、指南、设计稿” 内容却是发布会回顾和手机介绍。索性自己去官网找素材写一篇只针对iPhone X适配的贴子,与设计图无关的内容通通不提。 后续,我会发布iOS工程师如何从代码层面上做适配。原创 2017-09-17 17:25:35 · 17370 阅读 · 1 评论 -
iOS开发程序中各种变量的存储位置和程序返回变量的问题
c++内存到底分几个区?一: 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由os回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块转载 2017-05-19 12:51:12 · 1448 阅读 · 0 评论 -
iOS 协议代理的继承和扩展
在编码时,为了部分代码复用,可能会用带继承关系,有时,父类的协议代理有限,需要我们在继承的同时,扩展父类的协议方法。此时,存在两种选择:1、在父类代理协议delegate 的基础上扩展新方法。如UIKit框架中,UITableView 继承自UISCrollView ,同时他们都有同名的Delegate 属性,UITableView的Delegate是在UISCrollView的基础上扩展原创 2017-05-09 20:36:11 · 5793 阅读 · 0 评论 -
iOS 关于修饰代理用weak还是assign, strong
最近在网上看博客,看到有的代理用weak、assign、strong修饰。对于weak: 指明该对象并不负责保持delegate这个对象,delegate这个对象的销毁由外部控制。对于strong:该对象强引用delegate,外界不能销毁delegate对象,会导致循环引用(Retain Cycles)对于assing:也有weak的功效。但是网上有assign是指针赋值,不对引用计原创 2017-05-09 18:09:53 · 2675 阅读 · 0 评论 -
iOS对存放对象的数组排序
数组排序原创 2017-05-25 10:40:46 · 280 阅读 · 0 评论 -
iOS 获得iPhone iPad TabbarItem Frame 深度解析
- (void)viewDidLoad { [super viewDidLoad]; //iPhone上最多显示5个tabbarItem ipad上最多显示8个tabbarItem 高度固定为48 //iPhone 上item不论几个(不少以2个)总是均匀分布的 item的实际宽度(因部分屏幕宽度除不尽count,的除外),(WIDTH - items.count * 2原创 2017-05-24 18:23:31 · 2602 阅读 · 0 评论 -
UIWindow 详解及使用场景
首先来看一下UIWindow 继承关系方法和属性NS_CLASS_AVAILABLE_IOS(2_0) @interface UIWindow : UIView//window的屏幕,默认是 [UIScreen mainScreen] ,不能更改,否则没有界面@property(nonatomic,strong) UIScreen *screen NS_AVAILA原创 2017-05-05 12:44:18 · 1054 阅读 · 0 评论 -
iOS开发之抓包工具Charles的安装配置及使用详解
在移动app的开发当中,我们经常需要对大枷公司开发的app来进行仿制来提高自己的经验升级。这个时候我们往往需要抓取各自数据接口来获取数据。Fiddler这个软件由于是用C#开发的,所以很依赖win平台,所以我在实际开发中应用最多的还是Charles,由于开发语言是Java,所以具有很好的跨平台性。下载:官网:(PS:这是一款收费软件,土豪的童鞋可以支持一下。)目前最新的Re原创 2017-03-29 23:33:40 · 1158 阅读 · 0 评论 -
iOS开发底层知识——Runtime详解
首先,让我们先对runtime的底层概念梳理下,若想看怎么用可以翻到底部!简介Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的。比如:[receiver message];// 底层运行时会被编译器转化为:objc_msgSend(receiver, selector)原创 2017-03-13 15:03:06 · 2831 阅读 · 0 评论 -
iOS null 的替换
在iOS开发过程中经常需要与服务器进行数据通讯,Json就是一种常用的高效简洁的数据格式。问题现象但是几个项目下来一直遇到一个坑爹的问题,程序在获取某些数据之后莫名崩溃。其实很早就发现了原因:由于服务器的数据库中有些字段为空,然后以Json形式返回给客户端时就会出现这样的数据:"somevalue":null通过JsonKit 这个第三方库解析出来的数据原创 2017-03-07 09:43:18 · 521 阅读 · 0 评论 -
iOS framework开发流程总结
最近在做一个iOS的统计SDK,需要从零开始做一个framework,同时为了方便开发,花了点时间折腾,于是顺便总结一下iOS framework的开发流程,不同的Xcode版本流程会有些小区别,以下使用的是7.3.1。建立framework工程 建framework工程之前,要先了解frameworkframework和.a iOS一直只对用户开放静态库,直到iO原创 2017-01-25 10:02:21 · 1083 阅读 · 0 评论 -
H5前端性能优化高级进阶
随着移动互联网的发展,我们越发要关注移动页面的性能优化,今天跟大家谈谈这方面的事情。移动页面布局越来越复杂,效果越来越炫,直接导致了文件越来越大,下载和运行速度越来越低,而速度低会造成不良影响,降低用户体验,留存率底等。原创 2016-01-08 10:38:53 · 4244 阅读 · 0 评论 -
Xcode编译过程中 的部分警告处理(后续更新)
一个有节操的程序员会在乎自己的代码的警告,就像在乎饭碗边上有只死蟑螂那样。——@onevcaXcode编译过程中 ,有些警告,虽然有时不影响程序的运行,看起来很揪心。我们应该有足够的重视,因为这是程序存在的运行风险,甚至有些情况下,会出现意想不到的bug。下面是一些警告的处理。原创 2015-11-20 13:22:16 · 7527 阅读 · 0 评论 -
iOS开发——iOS、mac开源项目及类库汇总
本文总结了iOS开发中常用的网站和类库,现在总结出来分享给iOS程序员兄弟们,希望给他们带来帮助转载 2015-10-21 10:49:18 · 2209 阅读 · 0 评论 -
iOS Copy与MutableCopy 和 Copy与Strong 深度解析
开发中,数据处理是整个项目的重中之重,清晰的数据结构,安全高效的处理流程,能大大提高开发效率和系统的稳定性。数据是事物状态和变化的记录,具有可修改性和拷贝性,当多处使用,并有可能改变时,为了保障原数据的不变,我们需要拷贝一份新的数据,改变新的数据,而不改变原数据。数据处理中的,操作权限控制,数据的传递,数据的深、浅拷贝等。今天主要深度分析下,Copy与MutableCopy 和 Copy与Strong 区别及使用。原创 2017-05-17 19:40:25 · 2780 阅读 · 0 评论 -
iOS 开发中 Whose view is not in the window hierarchy 错误的解决办法
在 iOS 开发当中经常碰到 whose view is not in the window hierarchy 的错误,该错误简单的说,是由于 "ViewController" 还没有被加载,就调用该 ViewController 或者 ViewController 内的方法时,就会报这个错误。 在不同地方调用 ViewController,解决的方法也不太一样。原创 2017-05-22 14:21:39 · 1546 阅读 · 0 评论 -
iOS开发之NSDictionary里setValue:forKey与setObject:forKey、objectForKey与valueForKey的差异
setValue:forKey与setObject:forKey的差异在使用NSMutableDictionary的时候经常会使用setValue forKey与setObject forKey,他们经常是可以交互使用的,代码中经常每一种的使用都有。1,先看看setValue: forKey:的定义@interface NSMutableDictionary(N转载 2017-06-30 18:43:56 · 505 阅读 · 0 评论 -
iOS 同一个工程下 使用多target来构建大量相似App
本人今年主要在负责猿题库iOS客户端的开发,本文旨在通过分享猿题库ios客户端开发过程中的技术细节,达到总结和交流的目的。这是本技术分享系列文章的第一篇。本文涉及的技术细节是:采用多Target编译方案来实现多个相似App的开发,以保证我们能够快速地推出多个相似课程的客户端。问题描述今年春节后,我们对外发布了应用“猿题库-公务员考试行测”,接着我们就开始一个个发布猿题库系列转载 2017-09-06 18:16:09 · 1066 阅读 · 0 评论 -
[SKRemoteReviewViewController release]
iOS 系统正在变得更加人性化哈,iOS10.3中新添加了一个API 让用户可以在APP内直接给APP打分(没法写评语),为了项目更好的评分,我正准备在项目中添加,这个功能,实现起啦,很简洁,操作也很简单,一年只能弹出3次,何时弹出,具体控制逻辑后续给出参考。基本实现参考如下:+ (void)showAppStoreReView{ //仅支持iOS10.3+(需要做校验)且每原创 2017-08-02 18:27:14 · 1009 阅读 · 0 评论 -
代理和block的混用
代理和block是iOS开发中最常用的传值方式,具体的基本用法网上非常多,我就不一一讲解了,结合项目中最近遇到的一个小问题,做些个简单的笔记,供大家借鉴。原创 2017-08-21 15:05:10 · 471 阅读 · 0 评论 -
iOS10.3 app内好评详解 SKStoreReviewController
App Store评分方式:iOS10.3版本以前:只能通过APP内部打开网页形式,跳转到App Store 直接编辑评论。在评分页面,可以评分和评价,评论更有价值。缺点是跳转到App Store,用户的操作场景的转换,会造成部分用户使用的困扰,可能需要花费较长的等待时间,甚至加载失败等,造成评价数量少。iOS10.3+:APP内评分机制是iOS 10.原创 2017-07-26 12:02:25 · 8150 阅读 · 3 评论 -
Chisel-LLDB命令插件,让调试更Easy
LLDB 是一个有着 REPL 的特性和 C++ ,Python 插件的开源调试器。LLDB 绑定在 Xcode 内部,存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的步骤来操作程序的进展。(这里有一个关于调试器如何工作的总体的解释。)相信每个人或多或少都在用LLDB来调试,比如po一个对象。LLDB的是非常强大的转载 2017-07-26 14:52:17 · 2312 阅读 · 0 评论 -
UIWindow的windowLevel属性
UIwindow的 windowLevel 和 将自定义视图 覆盖到键盘视图以上。原创 2017-07-05 23:01:57 · 3019 阅读 · 0 评论 -
iOS开发知识-常用小技巧大杂烩
开发过程中遇到的一些问题,网上查阅整理的一些问题,供大家参考,方便大家查阅1. 打印View所有子视图po [[self view]recursiveDescription]2. layoutSubviews调用的调用时机* 当视图第一次显示的时候会被调用* 当这个视图显示到屏幕上了,点击按钮* 添加子视图也会调用这个方法* 当本视图的大小发生改变的原创 2017-06-14 10:11:13 · 900 阅读 · 0 评论 -
iOS工作小结
1.关于在NSobject类中无法声明UImageView *等参数Framwork要加入UIKit框架,UIImage才能使用2.打包时选择了表述文件后只会显示对应的一个证书,只要有多个证书就重启一遍xcode3.白色字体因为背景图片而看不清如何处理在背景图片上蒙一层半透明的UIImageView即可4.bounce可以控制scrollview的反弹效果为原创 2017-07-05 12:15:00 · 1635 阅读 · 0 评论 -
iOS开发-记录下在开发过程中遇到的问题的解决方案及经验总结-1
iOS 开发中的总结,小技巧,小思路的拓展,如有不当之处欢迎指正原创 2017-07-05 12:12:47 · 2668 阅读 · 0 评论 -
同时点击手势深度优化处理 setExclusiveTouch
前言iOS 中对手势响应事件的定义很丰富(参考iOS七种手势),最常用的是点击手势,若不做一些配置处理,你可能会遇到很尴尬的问题,如一个页面两个弹窗重叠,一个页面被Push了多次等。让我们一起探讨下,怎么避开这些坑。注意:我在下文描述时,用的是点击手势和响应区域,其实,UIView的子类都可以添加点击手势和响应事件,与点击UIbutton并响应事件本质上是相同的。先抛出一些小结论:原创 2017-07-03 11:17:52 · 3275 阅读 · 0 评论 -
NSProxy——少见却神奇的类
众所周知,NSObject类是Objective-C中大部分类的基类。但不是很多人知道除了NSObject之外的另一个基类——NSProxyObjective-C12NS_ROOT_CLASS@interface NSProxy这个奇怪的类是干嘛的?请允许我做一个黑人问号脸马上查了一下Apple的官方文转载 2017-07-03 10:45:16 · 562 阅读 · 0 评论 -
iOS开发总结之代码规范
最近被安排项目测试优化, 总结一下发现这些问题或多或少都是由代码习惯和编程规范引起的, 可见一个好的编码习惯是多么的重要! 趁着这两天休假将自己所认为的一些比较好的代码规范整理一下, 并结合之前遇到的实际case跟大家分享一下.原创 2015-10-21 10:02:24 · 712 阅读 · 0 评论 -
iOS 获得屏幕正在显示的Controller(自定义的控制器)的实用方法
项目有点紧张,好久没有写点东西了。后面我会抽更多时间学习和分享学习的一些总结,分享给各位,请持续关注。具体场景我都不说了。直接上代码- (void)needShowLogin{ YPJGLoginViewController * login = [[YPJGLoginViewController alloc] init]; login.hidesBottomBar原创 2016-11-16 15:15:46 · 8222 阅读 · 0 评论 -
修改Xcode新建类的注释模板(作者,公司名等)
有时,项目需要修改作者,公司名等,或者原先写的有误,需要更正的请向下看。原创 2016-02-01 18:41:42 · 8520 阅读 · 0 评论 -
iOS8 以上的指纹识别开发
iOS 8 SDK向开发者公开了Touch ID指纹识别功能,允许App对用户身份进行本地验证。使用Touch ID非常简单,只需要2步即可:1. 检查Touch ID是否可用。2. 获得指纹验证结果。下面以一个简单的例子来说明如何使用Touch ID。创建一个新的项目,向界面设计器中添加一个按钮。使用Touch ID需要引入LocalAuthentication框架:转载 2016-02-15 11:12:38 · 799 阅读 · 0 评论 -
最新的高效 易上手的app数据库realm 学习
最新的高效 易上手的app数据库realm 学习什么也不要说,直接上官网 ,https://realm.io/cn/ 还有中文版,从介绍到使用,问题解决等十分详细。请以官网为准Realm 大部分代码都是开源的,但是其强大功能取决于隐藏在平台内部的一个核心数据库引擎,这个引擎完全由 C++ 编写而成。在这次讲座当中,来自 Realm 的工程师 JP Simard 将带转载 2016-02-15 09:48:00 · 1626 阅读 · 0 评论 -
15分钟学会使用Git和远程代码库
Git是个了不起但却复杂的源代码管理系统。它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作。让我们诚实一记吧:Git是复杂的,我们不要装作它不是。但我仍然会试图教会你用(我的)基本的Git和远程代码库干活的工作步骤,在15分钟内。 工作步骤我会展示以下的步骤,通常能帮我独自在一台或多台机器上做项目。创建一个远程的空代码库(在BitBu原创 2016-01-12 16:45:14 · 414 阅读 · 0 评论 -
Git中从远程的分支获取最新的版本
Git中从远程的分支获取最新的版本如何更新下载到代码到本地,请参阅ice的博客基于Github参与eoe的开源项目指南方式一1. 查看远程仓库123456$ git remote -veoecn https://github.com/eoecn/android-app.git (fetch)eoecn https://g原创 2016-01-12 16:43:07 · 861 阅读 · 0 评论 -
svn建立分支和svn代码合并的操作方法
svn建立分支和svn代码合并的操作方法首先说下为什么我们需要用到分支-合并。比如项目demo下有两个小组,svn下有一个trunk版。由于客户需求突然变化,导致项目需要做较大改动,此时项目组决定由小组1继续完成原来正进行到一半的工作【某个模块】,小组2进行新需求的开发。那么此时,我们就可以为小组2建立一个分支,分支其实就是trunk版【主干线】的一个copy版,不过分支也转载 2016-01-12 16:35:52 · 867 阅读 · 0 评论 -
用InterfaceBuilder构造一个App 、 视图控制器和视图 、 控件与事件
StoryBoard iOS5之后Apple提供了一种全新的方式来制作UI,那就是StoryBoard。简单理解来说,可以把StoryBoard看做是一组viewController对应的xib,以及它们之间的转换方式的集合。在StoryBoard中不仅可以看到每个ViewController的布局样式,也可以明确地知道各个ViewController之间的转换关系。相对于单个的xib,其代码需求更少,也由于集合了各个xib,使得对于界面的理解和修改的速度也得到了更大提升。减少代码量就是减少bug量,这也是原创 2016-01-12 16:06:57 · 649 阅读 · 0 评论 -
git查看本地和创建分支、上传分支、提交代码到分支、删除分支等,git分支
git查看本地和创建分支、上传分支、提交代码到分支、删除分支等,git分支git查看本地和创建分支以及上传分支到服务器以下是git命令行里边的命令操作,加上了说明:Welcome to Git (version 1.9.5-preview20141217)Run 'git help git' to display the help index.Run 'git he原创 2016-01-12 11:10:19 · 895 阅读 · 0 评论 -
iOS APP启动过程
从main文件开始说起程序启动分为两类:1.有storyboard 2.没有storyboard(一)有storyboard情况下:1.main函数2.UIApplicationMain创建UIApplication对象创建UIApplication的delegate对象3.根据Info.plist获得最主要storyboard的文件名,加载最主要的storyb原创 2016-01-26 21:24:31 · 1117 阅读 · 0 评论 -
iOS开发-常用第三方开源框架介绍
图像:1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存。可对图片进行缩放等操作。 下载:https://github.com/mwaterfall/MWPhotoBrowser目前比较活跃的社区仍旧是Github转载 2016-01-25 17:11:54 · 717 阅读 · 0 评论