iOS开发
文章平均质量分 63
AlexAoMin
这个作者很懒,什么都没留下…
展开
-
第一个开源库
AAMultiSelectController地址:https://github.com/aozhimin/AAMultiSelectControllerAAMultiSelectController provides a popup dialog which user can multi-select.it’s easy to use and integrate in your project.T原创 2016-09-27 12:47:14 · 683 阅读 · 0 评论 -
一张图明白各个屏幕iPhone的渲染
见图:昨天写的介绍的blog: http://blog.sunnyxx.com/2014/09/10/iphone6-resolution/图片原文链接:http://www.paintcodeapp.com/news/iphone-6-screens-demystified转载 2016-04-26 12:36:32 · 437 阅读 · 0 评论 -
Int转NSString的高大上写法
有一个Int值NSInteger number = 123;要转成NSString,我们一般这么写:NSString *string = [NSStringstringWithFormat:@"%d", number]; 更高大上的我们可以尝试这么写哦:NSString *string = @(number).stringValue;转载 2016-04-26 12:35:50 · 3399 阅读 · 0 评论 -
iOS8初探 - Size Class
iOS8新特性,Size Class,是对老式UI思路的全新抽象:把各个设备屏幕(iphone4,5,6, ipad,iwatch?)以及它们的屏幕旋转状态都抽象成屏幕Size的变化,将这些Size归纳成几个类别(Class)宽(正常,任意, 紧凑),高(正常,任意, 紧凑)3x3共9种Size,每种Size都可以设置特定的一套布局,如果不特殊指定,默认是在(宽转载 2016-04-26 12:35:15 · 373 阅读 · 0 评论 -
JSPatch 实现原理详解
JSPatch 是一个 iOS 动态更新框架,只需在项目中引入极小的引擎,就可以使用就可以使用 JavaScript 调用任何 Objective-C 原生接口,获得脚本语言的优势:为项目动态添加模块,或替换项目原生代码动态修复 bug,目前在 github 上开源。微信 iOS 客户端使用了 JSPatch,本篇文章详细阐述 JSPatch 的实现原理和一些细节,以帮助使用者更好地了解和转载 2016-04-26 12:34:18 · 456 阅读 · 0 评论 -
携程移动App架构优化之旅
本文为携程移动开发总监陈浩然在2015年10月份的ArchSummit全球架构师峰会上的演讲总结。由于面向受众为架构师,因此不会涉及到很多技术细节。通过本文,你可以了解携程通过哪些手段来优化它的App架构的。 『携程旅行App』作为携程超级App产品,是公司全品类旅行产品的核心售卖入口,过去两年为了更好支撑无线业务的快速发展,携程移动App在产品和技术架构方面也做了大量的优化。转载 2016-04-26 12:33:36 · 3360 阅读 · 0 评论 -
解决常见的 masksToBounds 离屏渲染带来的性能损耗
日常生产中app布局离不开美丽的圆角(RounderCorner),特别是用圆角UIImageView来做数据呈现交互,但是这种柔和易于让人接受的视图效果并不仅仅是改变了一个形状那么简单,需要付出一定的性能代价。 相信这已经是总所周知的问题了,日常我们使用layer的两个属性,简单的两行代码就能实现圆角的呈现imageView.layer.cornerRadius =转载 2016-04-26 12:32:58 · 539 阅读 · 0 评论 -
iOS组件封装的思路和实现
前两天面试了一个应聘者,他的演示项目里有广告轮播功能。恰好之前我封装过一个实现了此功能的控件,于是就顺着他广告轮播的实现一直往下聊,从需求的抽象一直聊到各种实现的细节和需要考虑的问题等等。组件的封装是开发中比较有趣的一件事。今天我们就拿轮播控件举例,聊聊组件的封装。授人予渔先要授人予鱼。先给出鱼(PSCarouselView:https://github.com/DeveloperPans/PSC转载 2016-04-26 12:32:16 · 1653 阅读 · 0 评论 -
Facebook iOS 应用是如何加速图片显示的?
你的Facebook的动态消息中充满着一些关于你朋友、家人以及你所爱的人的照片,也许你会想要在手机上也能重温那些场景。我们一直在寻找提升用户体验的方式,包括更优秀和更快的移动端体验。为了达到这个目标,我们团队仔细研究了如何在 iOS 设备上更好更快得显示照片并最终找到了一种方法,能够让 Facebook for iOS 的数据开销降低10%,同时将照片加载显示的速度提升了15%。接下来的内容是转载 2016-04-26 12:31:14 · 981 阅读 · 0 评论 -
【超强干货分享】蘑菇街App的组件化之路
本文为『移动前线』群在3月10日的分享总结整理而成,转载请注明来自『移动开发前线』公众号。嘉宾介绍蘑菇街李忠(花名银时,网名 limboy),多年客户端开发经验,目前主要负责移动端基础架构设计及核心技术难点攻克(以 iOS 为主),为集团所有 App 提供移动端解决方案。 热衷于尝试新技术,并在团队中推广,致力于以优秀的代码、新的理念拓宽工程师的思路和眼界,以提升团队整体作战能转载 2016-04-26 12:29:35 · 920 阅读 · 0 评论 -
iOS界面卡顿之离屏渲染
导读:离屏渲染在开发中带来界面卡顿问题一直让开发者们头疼.今天在这里写一遍关于离屏渲染的博文.希望大家有所收获现在的iOS开发越来越注重App性能和用户体验了.性能优化和内存管理是iOS面试中必问的两道面试题.也是编程中最难的部分之一要想知道如何解决界面卡顿问题,那你必须对离屏渲染有所了解要想成为一个高级iOS程序员,你必须学会如何性能优化,内存优化读懂了这篇文章,转载 2016-04-26 12:27:49 · 730 阅读 · 0 评论 -
React Native-目前最火的前端技术
文章摘要:一名程序员只用这一门技术,就可以同时写出androidapp,ios app,以及后台应用程序本文来自微信公众号“给产品经理讲技术”(pm_teacher),欢迎关注。做为一名产品经理,你是否遇到过这样的窘境,“帮我把字体调成 16号呗,颜色变成 #FFFF00FF,老大说这里最好改一下”,作为一名 app 的开发只能无奈但心里窃喜的告诉你,“只能等下个版本了,必须要重新发布转载 2016-04-26 12:26:59 · 631 阅读 · 0 评论 -
如何让用户觉得你的 app 加载速度很快
文章摘要:用户讨厌等待,如果你让用户觉得他们没有等待,那么他们就会喜欢你的App。编者按:本文作者 Nick Babich 在文中介绍了几种 “提高” 加载速度的方法。当我们设计产品的时候,我们没有办法模拟不同的加载速度。因此如果用户等待太长的时间才能看到内容,并不是我们特意的安排。网速不稳定,尤其是当我们加载图片或音乐时,时间会较长。在这种情况下,我们不得不考虑在这种间隙向用转载 2016-04-26 12:26:21 · 678 阅读 · 0 评论 -
阿里无线11.11 之 Weex——关于移动端动态性的思考、实现和未来
什么是动态性今天在移动端,尤其是像手机淘宝这样的 app 中,动态性问题逐渐成为一个比较棘手的问题。所谓动态性,就是把移动应用本身的灵活性、迭代更新的周期和成本优化到极致。比如手机淘宝的店铺首页,它允许商家实时装修自己的店铺,更新自家的商品、活动等信息;再比如淘宝、天猫每次大促的会场页面,要求我们非常灵活的及时调整界面信息和状态,确保在瞬息万变的活动当天紧跟促销节奏,应对各种突发情况。转载 2016-04-26 12:23:00 · 603 阅读 · 0 评论 -
iOS应用架构谈 组件化方案
简述前几天的一个晚上在infoQ的微信群里,来自蘑菇街的Limboy做了一个分享,讲了蘑菇街的组件化之路。我不认为这条组件化之路蘑菇街走对了。分享后我私聊了Limboy,Limboy似乎也明白了问题所在,我答应他我会把我的方案写成文章,于是这篇文章就出来了。另外,按道理说组件化方案也属于iOS应用架构谈的一部分,但是当初构思架构谈时,我没打算写组件化方案,因转载 2016-04-26 12:21:38 · 524 阅读 · 0 评论 -
在 iOS 上开始创建你的虚拟现实应用
原文链接 : Getting Started | Cardboard | Google Sevelopers译文链接 : 在 iOS 上开始创建你的虚拟现实应用以前 Cradboard 也是支持在 iOS 上使用的,依靠 Unity 来实现,所以你需要用 C# 来编写 iOS app(听起来很奇怪对不对?) 而今天在 GDG China 看见 全新 VR 视图:让你的应用和网站转载 2016-04-26 12:20:45 · 735 阅读 · 0 评论 -
黑魔法__attribute__((cleanup))
编译器属性__attribute__用于向编译器描述特殊的标识、检查或优化,几个常用的用法看《mattt大神的文章》就好。今天发现一个名为cleanup的黑魔法属性,简单介绍下。基本用法__attribute__((cleanup(...))),用于修饰一个变量,在它的作用域结束时可以自动执行一个指定的方法,如:// 指定一个cleanup方法,注意入参是所转载 2016-04-26 12:37:06 · 362 阅读 · 0 评论 -
【搬运】实现一个有意思的TODO宏
实现一个能产生warning的TODO宏,用于在代码里做备忘,效果:下面一步步来实现这个宏。Let’s do it手动让编译器报警(报错)可以用以下几个方法:#warning sunnyxx#error sunnyxx#pragma message "sunnyxx"#pragma GCC warning "sunnyxx"#pr转载 2016-04-26 12:39:47 · 549 阅读 · 0 评论 -
应用跳转之被苹果狠狠的坑了一把
原先的应用间跳转都是通过- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url NS_DEPRECATED_IOS(2_0,9_0,"Please use application:openURL:options:")__TVOS_PROHIBITED;- (BOOL)原创 2016-05-17 12:51:22 · 3071 阅读 · 1 评论 -
AutoLayout代码控制约束是否起作用
今天在做一个需求的时候需要在TableView动态控制约束是否起作用,NSConstraint这个类主要有三个方式实现:1.通过active设置,但这个只在iOS8.0以上能用2.7.0可以通过对这个约束所附加的'view来addConstraint和remove实现,这里有个小坑,从xib或sb拖出的IBoutlet的storeage必须设成strong,不然remove后就会变成nil原创 2016-05-27 16:38:43 · 743 阅读 · 0 评论 -
【Tip来3发】继续编译有Error的工程
当你把某个重要接口改了的时候,全工程将会有若干编译错误,但默认情况编译器遇到第一个错误之后就会停止Build,那么你就需要这个Tip:转载 2016-04-26 12:45:03 · 560 阅读 · 0 评论 -
巧用 Class Extension 分离接口依赖
Class Extension 和 Category 是我们经常使用的 Objective-C 语法:// Class Extension@interface Sark ()@end// Category@interface Sark (Gay)@end还记得最开始学习 Objective-C 时,并没有支持 Class Extensi转载 2016-04-26 12:48:57 · 472 阅读 · 0 评论 -
launch once 与 dispatch once
昨天发了个 launch once的 code snippet 陆续有朋友和我讨论,今天详细解释下。launch once 这段代码实现了在一个 Engine 对象生命周期内只能调用一次 launch 方法:而我们常用的 dispatch once 由于其使用了一个 static 变量作为 onceToken,所以会在转载 2016-04-26 12:47:52 · 670 阅读 · 0 评论 -
Objective-C Ivar Layout 探索
这次探索源于一个朋友问的问题,当我们定义一个类的实例变量的时候,可以指定其修饰符:@interface Sark : NSObject { __strong id _gayFriend; // 无修饰符的对象默认会加 __strong __weak id _girlFriend; __unsafe_unretained id _company;}@e转载 2016-04-26 12:47:13 · 481 阅读 · 0 评论 -
关于 weak 变量的一个奇怪问题
来自关注这个公众号的一个朋友(何哈哈...Newber)的留言提问,下面是简化的代码:这是个很有难度的问题,希望大家一起讨论下为什么会这样,之后我会发一下我的理解。转载 2016-04-26 12:46:46 · 650 阅读 · 0 评论 -
2015 Objective-C 新特性
Overview自 WWDC 2015 推出和开源 Swift 2.0 后,大家对 Swift 的热情又一次高涨起来,在羡慕创业公司的朋友们大谈 Swift 新特性的同时,也有很多像我一样工作上依然需要坚守着 Objective-C 语言的开发者们。今年的 WWDC 中介绍了几个 Objective-C 语言的新特性,还是在“与 Swift 协同工作”这种 Topic 里讲的,越发凸显这门转载 2016-04-26 12:46:09 · 375 阅读 · 0 评论 -
【Tip来2发】快速定位方法调用者
一个非常实用的快捷键转载 2016-04-26 12:43:54 · 370 阅读 · 0 评论 -
【Tip来4发】快速在文件树视图中切换到当前文件
昨天出去玩了木有发,今天继续。之前也介绍过,一个必不可少的快捷键:转载 2016-04-26 12:43:22 · 570 阅读 · 0 评论 -
【Tip来7发】给@property设置断点
看图- -PS: 欢迎热心观众拨打屏幕下方的热线电话,推荐些Topic,要不我都不知道要发点啥了- -转载 2016-04-26 12:42:54 · 391 阅读 · 0 评论 -
【QA】在GCD中控制并发数
首先感谢下热心观众,回复了若干个问题,没办法一一解答(有的我也不知道额- -)请见谅。今天回复下@陈作君同学的提问:“dispatch_concurrent_queue怎么像nsoperationqueue一样控制其中任务的并发数”没理解错的话,应该指 NSOperationQueue 中的maxConcurrentOperationCoun转载 2016-04-26 12:42:18 · 1483 阅读 · 0 评论 -
【Tip来1发】去除Preferred Max Layout Width警告
去除Preferred Max Layout Width警告当 IB 中的 UILabel 的行数不是1,且 Deploy Target 小于iOS8时,很可能会遇到下面的警告:一个可行的解决办法是将 UILabel 这个属性设置成0转载 2016-04-26 12:41:42 · 458 阅读 · 0 评论 -
【Tip来5发】IB中设置多行文字
IB功能还是挺强大的,虽然有时候比较隐蔽:转载 2016-04-26 12:41:05 · 614 阅读 · 0 评论 -
Notification Once
前段时间整理项目中的AppDelegate,发现很多写在- application:didFinishLaunchingWithOptions:中的代码都只是为了在程序启动时获得一次调用机会,多为某些模块的初始化工作,如:- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOption转载 2016-04-26 12:40:21 · 533 阅读 · 0 评论 -
话谈 iOS 目录结构的划分
你的目录组织方式是这样:先按照页面分,然后再按照 MVC 来细分。往往业界有两种做法:先按业务划分,再按照 MVC 来划分先按 MVC 划分,再按照业务划分第一种的好处是把相应业务的代码放在一起,找特别好找,相应的 xib、model 和 ViewController 全在一个地方。在这些代码之间跳转特别方便。Telegram 非常大转载 2016-04-26 12:19:15 · 510 阅读 · 0 评论 -
iOS应用层架构之CDD
从2010年开始接触iOS开发到现在,折腾过不少app的架构。从MVC到MVVM,VIPER,MVP,以及最新的ReactiveCocoa都做过实战尝试,还有其他变种,诸如猿题库iOS客户端架构设计,也做过一些学习研究。这些技术概念如果不熟悉,建议每个链接都点开好好研读下,不要对你的大脑太温柔。在开始架构讨论之前,再推荐一些其他非常值得一读的文章:唐巧-被误解的 MVC 和被神化的 MVVM,转载 2016-04-26 12:18:14 · 829 阅读 · 0 评论 -
如何打造一个让人愉快的框架
这是我在今年 1 月 10 日 @Swift 开发者大会 上演讲的文字稿。相关的视频还在制作中,没有到现场的朋友可以通过这个文字稿了解到这个 session 的内容。虽然我的工作是程序员,但是最近半年其实我的主要干的事儿是养了一个小孩。 所以这半年来可以说没有积累到什么技术,反而是积累了不少养小孩的心得。 当知道了有这么次会议可以分享这半年来的心得的时候,我毫不转载 2016-04-26 12:17:10 · 708 阅读 · 0 评论 -
浅谈 iOS 版本号
FIR.im 一直在尽量兼容不同使用习惯的版本号形式, 但是在使用中我们发现好多开发者对怎么更好的用版本号来标示应用很陌生. 这是篇基础文章, 简单介绍 iOS 的版本号.名词解释Version, 通常说的版本号, 是应用向用户宣传说明时候用到的标识. 一般有2段或者3段式, 如:2.1,8.1.2Version 一般由产品部门确定, 完全迥异的更新需要转载 2016-04-26 10:49:19 · 391 阅读 · 0 评论 -
xcode armv6 armv7 armv7s arm64
1.arm结构处理器,几乎所有的手机都基于arm,其在嵌入式系统中应用非常广泛。ARM 处理器因为低功耗和小尺寸而闻名,它的性能在同等功耗的产品中也很出色。这里我们注意一点,模拟器并不运行arm代码,软件会被编译成x86可以运行的指令。只有在目标设备上,才会执行设备对应的指令集2.之前每个版本的ipa包打出来都才20M出头,后来不知道从哪个版本起打的包每次都转载 2016-04-26 10:48:30 · 551 阅读 · 0 评论 -
objc非主流代码技巧
我是前言看开源代码时,总会看到一些大神级别的代码,给人眼前一亮的感觉,多数都是被淡忘的C语言语法,总结下objc写码中遇到的各类非主流代码技巧和一些妙用:[娱乐向]objc最短的方法声明[C]结构体的初始化[C]三元条件表达式的两元使用[C]数组的下标初始化[objc]可变参数类型的block[objc]reado转载 2016-04-26 10:00:34 · 384 阅读 · 0 评论 -
iOS 组件化方案探索
注:本文版权属于 bang, 我只是搬运工看了 Limboy(文章1 文章2) 和 Casa (文章) 对 iOS 组件化方案的讨论,写篇文章梳理下思路。首先我觉得”组件”在这里不太合适,因为按我理解组件是指比较小的功能块,这些组件不需要多少组件间通信,没什么依赖,也就不需要做什么其他处理,面向对象就能搞定。而这里提到的是较大粒度的业务功能,我们习惯称为”模块”。为了方便表述,下面模块转载 2016-04-26 09:59:49 · 414 阅读 · 0 评论