展开

关键词

iOS谈 开篇

缘由之前安居客iOS app的第二版大部分内容是我做的,期间有总结了一些经验。 其实对于iOS客户端来说,复杂度不亚于服务端,但侧重点和入手点却跟服务端不太一样。比如客户端就不需要考虑类似C10K的问题,正常的app就根本不需要考虑。 这系列文章我会主要专注在iOS方面,很多方案也是基于iOS技术栈的特点而建立的。因为我个人不是很喜欢写Java,所以Android这边的我就不太了解了。 iOS有审核周期,如何能够通过不发版本的方式展示新的内容给户?如何修复紧急bug? 不重要不代表不着去做,关于性能优化的东西,我会对放到各系列文章里面去。比如网络层优化,那就会在网络层方案的那篇文章里面去写,对每层都有每层的不同优化方案,我都会在各自文章里面一一细说。

51670

iOS谈 网络层设计方案

我接触过一些App(开源的和不开源的)的代码,在看到网络层这一块时,尤其是在看到各位师各显神通展示了各种技巧,我非常为之感到兴奋。但有的时候,往往也对于其中的一些缺陷感到失望。 这篇文章就主要会讲这些方面:网络层跟业务对接部分的设计网络层的安全机制实现网络层的优化方案网络层跟业务对接部分的设计在安居客App的更新换代的时候,我深深地感觉到网络层跟业务对接部分的设计有多么重要 iOS开发领域有很多对象间数据的传递方式,我看到的大多数App在网络层所采的方案主要集中于这三种:Delegate,Notification,Block。 (可能有),Delegate、Block以及target-action都有,阿里iOS App网络层的作者说这是为了方便业务层选择自己合适的方法去使。 我们在做分层的目的其中之一就在于下层对上层有一次抽象,让上层可以不必关心下层细节而执行自己的业务。

66990
  • 广告
    关闭

    腾讯云前端性能优化大赛

    首屏耗时优化比拼,赢千元大奖

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS谈 本地持久化方案及动态部署

    持久化方案对整个App的影响和网络层方案对整个的影响类似,一般都是导致整个项目耦合度高的罪魁祸首。 很多设计不好的,就在于师并没有认识到区分强弱业务的重要性,所以就导致腐化的速度很快,越来越难维护。所以说回来,持久层与业务层之间的隔离,是通过强弱业务的隔离达到的。 数据库读写隔离在网站的中,对数据库进行读写分离主要是为了提高响速度。在iOS中,对持久层进行读写隔离的设计主要是为了提高代码的可维护性。 我见过很多框(不仅限于iOS,包括Python, PHP等)都把这两者混在一起去处理。 其实很多别的师在设计持久层框的时候,也没有将Table和Record区分开,对的,这里我说的框包括Core Data和FMDB,这个也不仅限于iOS领域,CodeIgniter、ThinkPHP

    57570

    iOS谈 view层的组织和调方案 pragma mark - life cyclepragma mark - life cyclepragma mark - getters and set

    前言《iOS谈 开篇》出来之后,很多人来催我赶紧出第二篇。这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能来写博客的时间不够充分。现在好啦,第二篇出来了。 如果有人问我iOS该怎么做MVC的划分,我就会像上面这么回答。MVCS苹果自身就采的是这种思路,从名字也能看出,也是基于MVC衍生出来的一套。 在iOS领域大部分MVVM都会使ReactiveCocoa,但是使ReactiveCocoa的iOS就是基于MVVM的吗? 在实际iOS中,MVVM该出现在了大部分创业公司或者老牌公司新App的iOS图中,据我所知易宝支付旗下的某个iOS就整体采了MVVM,他们抽出了一个Action层来装各种ViewModel 不使继承的好处我在这里已经说了,放到iOS来看,还能再多额外两个好处:1. 在业务方做业务开发或者做Demo时,可以脱离App环境,或花更少的时间搭建环境。2.

    43280

    行为准则

    行为准则 程序是企业解决方案(ESA)的一个子集(图1)。程序既是一个过程(和设计)又是一个东西(可交付成果——的内容)。 图1程序存在于多个详细级别:在概念层次上,企业(EA)策略和计划确保程序组合与其他形式的解决方案(业务、技术和信息)协同有效地发展。 在逻辑层次上,程序超出了企业解决方案(ESA)工作的概念层次,它包括设计和重软件服务和接口,从而提高了开发人员的生产力和程序的灵活性、质量和一致性。 程序的原则适于所有类型的程序方法和解决方案。 在这个概念级别上,最能实现这些策略和计划以及程序规程的角色是企业解决方案师。项目级的解决方案和程序师也可能被要求担任这个角色(或者至少就AA规划问题咨询)。

    16730

    最新iOS设计规范二|7大

    iOS是运行于iPhone、iPad和iPod touch设备上、最常的移动操作系统之一。作为互联网的开发者、产品经理、体验设计师,都当理解并熟悉平台的设计规范。 这有利于提高我们的工作效率,保证户良好的体验。本文是iOS设计规范系列第二篇:7大。 7大(Architecture)是有关软件系统整体流程、结与组件的抽象描述,于指导大型软件系统各个方面的设计。iOS关于的指导原则分为7个如下的部分。 为你的APP设计一个信息,在这个中,只需要最少的点击、最少的滑动和最少的页面数量便可以访问相内容。使手势操作让页面切换更流畅。让户以最小的阻力在页面之间跳转。 导航栏的标题可以显示层级结中的当前位置,返回按钮可以轻松返回到上一位置。使 Tab Bar(标签栏)展示对类别的内容或功能。使标签栏显示对类别的内容或功能。

    14220

    iOS系统及常

    iOS的系统分为四个层次,由内而外依次是: 核心操作系统层(Core OS layer)核心服务层(Core Services layer)媒体层(Media layer)可触摸层(Cocoa Touch 大部分iOS开发者都是跟Cocoa Touch layer打交道5、常IOS系统框AddressBook.framework:提供访问存储核心数据库中户联系人信息的功能AddressBookUI.framework 常iOS 开源框网络框ASIHTTPRequest:老程序的爱,早几年风靡iOS界。不再提供更新维护,已被其他框取代。 CoreGraphics框,它提供的都是C语言的函数接口,是可以在ios和mac os通的。 Foundation框所有的Mac OS X和IOS程序都是由大量的对象成,而这些对象的根对象绝大多数是NSObject,NSObject就处在Foundation框之中,也可理解为Foundation

    1.1K20

    IOS学习1——IOS程序的生命周期及基本

    iOS程序一般都是由自己编写的代码和系统框(system frameworks)组成,系统框提供一些基本infrastructure给所有app来运行,而你提供自己编写的代码来定制app的外观和行为 文件加载户界面 调AppDelegate自定义代码来做一些初始化设置 将app放入Main Run Loop环境中来响和处理与户交互产生的事件 四、程序的iOS程序都遵循Model-View-Controller 的,Model负责存储数据和处理业务逻辑,View负责显示数据和与户交互,Controller是两者的中介,协调Model和View相互协作。 除了使View和Control来建view层次结来影响app外观之外,还可以使Core Animation框的Layer对象来渲染view外观和建复杂的动画。 这样就确保与接收到户相关的事件被有序地处理。下图显示main run loop的户事件最终是怎样被程序处理。

    45750

    Android

    这段时间,我们所建的Android和技术也在不断地演变。本文将向您阐述我们的经验,错误以及变化背后的原因。 曾经的追溯到2012年我们的代码库使的是基本结,那个时候我们没有使任何第三方网络类库,而且AsyncTask也是我们的好朋友。当时的可以大致表示为下图。? RxJava驱动的新型我们使上文提到的组织差不多两年的时间。在那段时间内,我们做了一些改进,稍微缓解了上述问题。 考虑到经历了前几年的痛苦,我们开始考虑,一个新的程序体系看起来会是怎样的。因此,我们想出了这个。?类似于第一种,这种体系同样被划分为Data Layer和View Layer。 不断地阅读和尝试,这样我们才能找到更好的方法来继续建优秀的Android程序。

    47570

    程序的当前趋势

    本文有些不是最最新的,但是方法和思路也有借鉴意义,稍后会介绍Gantner的最新趋势。 该考虑适这些新趋势使面向服务(service-oriented architecture,SOA),包含微服务(MSA),程序,并集成内部商现货(COTS)和遗留程序,以及业务合作伙伴程序和云服务 图1摆脱三层程序体系结的分层方法的问题在于它只在一个维度中定义程序(图2)。所有不同的数据源都在底层。所有户界面(UI)逻辑都在顶层。而且,程序的其余部分介于两者之间。自上而下。 接受程序范例和模型术语“程序”是指程序的结和组织,包括其组件以及它们之间的交互相互依赖模型。程序范例,并使常见的模式和模型来设计程序并定义其。 :范式模型结和组织范例:范例(有时称为样式)是一个总体概念框,它影响您设计程序的方式。

    19820

    「企业概述

    在信息系统中,成企业(EA)支柱的几个域之一描述了业务中使程序的行为,重点是它们如何相互之间以及如何与户交互。 试图确保组织创建复合所使程序套件是可伸缩的、可靠的、可的和可管理的。定义了多个程序如何准备一起工作。 )根据程序遵循的模式,可以将程序分类为各种类型。 师是计算机编程团队中的一名领导或技术经理,专门负责程序和使的技术。 任务师是组织中程序特定的一切的大师。

    23720

    ios知识

    一、ios总体知识要全面掌握ios开发技术,需要学习和掌握下列几方面的知识和技巧:1.开发语言:Objective-C或Swift。 4.集成开发测试环境Xcode:包括编码、编译、运行、测试、UI可视化建、APP Sotre发布等工作均可以在此环境下完成。图1:ios知识总体上述四个方面的知识对于ios程序开发缺一不可。 其中开发语言是基础,ios SDK是核心,Xcode是工具,App是必须遵循的基本规则。 Frameworkios技术体系按照官方说法分为下列四层:图2:ios技术层次结这些技术被打包成现成的Framework,供开发者直接调。 由此可见,一个初级ios开发者掌握至少15个框,一个中级ios开发者掌握40~50个框,一个高级ios开发者掌握50~60个框(至少包含10个高级框)。

    5720

    iOS CPU arm64armv7sarmv7armv7ki386x86_64

    On iOS, tvOS and watchOS, in addition to picking architectures for the device deployment, you can also are largely irrelevant today, deprecated as of macOS 10.14 and totally unsupported as of macOS 10.15.iOS and iPadOSOn iOS and iPadOS, Elements supports three architectures for device deployment:arm64 is the and iPad 4.armv7, an older variation of the 32-bit ARM CPU, as used in the A5 and earlier.Very old iOS devices shipped before 2009 had armv6 CPUs, which are no longer supported by current iOS SDKs, nor by

    1.3K10

    之择

    有什么样,就有什么样建筑!??前者的来盖厂房,后者的是建摩天大厦特不正经就今天和大家讨论软件的大厦如何建?I、单体 or 微服务微服务已经风靡神州,已然是万人迷? 所有微服务导致的问题,都是单体的优点? 既然谈到了寄生的基础我们是绕不开的有人说serverless可以不考虑基础,呵呵,这个以后再谈大家来看看和基础的演变过程...?客官,你看到了吗? 和基础是共生关系,相互促进,相互依赖单体物理硬件时代CS虚拟机时代多层云计算时代微服务 容器编排时代那么什么情况下单体(或多层),什么情况下微服务 特不正经的小结: 以上该够清楚了,不小结了。:-)V、大数据 vs 传统传统数据的典型是关系型数据库如Oracle或MySQL,或者微服务+RDB的大数据的典型:?

    321100

    iOS开发之DeviceCheck框

    iOS开发之DeviceCheck框      DeviceCheck框iOS 11后提供的一个记录户设备的工具框。 在实际中,经常会遇到需要识别户设备的需求,例如某些免费试程序,会根据设备判断户是否已经试过。 Apple基于保护户隐私的原则,开发者不能直接获取户设备的相关标识信息,iOS 11后,Apple提供了DeviceCheck框来提供设备检查功能。    DeviceCheck非常简单,大部分设备检查的逻辑要交给服务端调Apple提供的接口来实现。    DeviceCheck框中只提供了一个类:DCDevice。 其中定义如下:@interface DCDevice : NSObject 类属性 获取实例对象@property (class, readonly) DCDevice *currentDevice; 检查框是否可

    75070

    iOS开发之EventKit框

    iOS开发之EventKit框一、关于系统日历和提醒事宜      iOS系统自带的Calendar非常强大,户可以在其中添加日程事件,并且其提供了接口供其他进行调,可以向日历中进行事件的读取和写入 首先,Canlendar默认创建了几个类型的日历,户也可以根据需要创建自定义的日历,如下图:? 使日历和提醒事宜这两个,可以提高生活工作效率,例如邮件通过与日历的交互可以将会议邮件添加到户的日程中,EventKit框则是提供了接口与这两个进行交互。 二、EventKit框概览    EventKit核心的途是配合系统的日历与提醒,对事件提醒进行管理,其中核心类即结如下:? 三、日历事件操作      第三方需要操作户的日历事件,需要获取户授权,首先需要在info.plist文件中添加如下权限请求字段:?

    1.1K51

    iOS开发之EventKitUI框

    前面博客,有介绍EventKit这个框的使,使EventKit可以与系统的日历和提醒进行交互,读写户的日程事件。 EventKitUI,顾名思义,其实基于EventKit框,提供了一套系统的事件管理界面。 EKCalendarChooserDisplayStyle)displayStyle eventStore:(EKEventStore *)eventStore; 实例化方法 entityType参数决定是 系统的日历 还是 提醒 对的 :(EKCalendarChooser *)calendarChooser; 户取消选择后触发的回调- (void)calendarChooserDidCancel:(EKCalendarChooser interface EKEventViewController : UIViewController 代理对象@property(nonatomic, weak, nullable) id delegate; 对的事件对象

    44350

    iOS开发之ExternalAccessory框

    开发之ExternalAccessory框 ExternalAccessory框来对外设进行管理,iOS外设通常是通过MFI认证的外部设备,可以通过蓝牙进行连接,也可以使lighting端口进行连接 EAAccessoryManager类来对外设进行管理,其中属性方法如下:@interface EAAccessoryManager : NSObject 获取单例对象+ (EAAccessoryManager (void)accessoryDidDisconnect:(EAAccessory *)accessory;@end 需要注意,与外设进行通讯需要指定对的协议,首先,需要在iOS的info.plist 文件中添加如下键来指定此要交互的外设协议:? , readonly, nullable) NSOutputStream *outputStream;@end EAWiFiUnconfiguredAccessoryBrowser类来浏览未配置的WIFI

    79320

    iOS开发之CoreSpotlight框

    iOS开发之CoreSpotlight框    CoreSpotlight是iOS提供的一套本地检索推荐功能。 开发者可以为自己的添加本地索引,户通过索引中定义的关键字可以搜索并定位到程序内的指定功能。 NSLog(@buildSearchableItem Error:%@,error.localizedDescription); } }];}在搜索栏中搜索索引的关键字,标题,名称、路径都可以搜索到当前程序 :(CSSearchableIndex *)searchableIndex;来提供数据- (nullable NSData *)dataForSearchableIndex:(CSSearchableIndex 文件描述@property(nullable, copy) NSString *comment;内容版权@property(nullable, copy) NSString *copyright;最后使时间

    37520

    iOS开发之CoreTelephoney框

    iOS开发之CoreTelephoney框      CoreTelephoney框来获取手机网络状态以及运营商相关信息。 一、CTTelephonyNetworkInfo类      这个类是CoreTelephoney框的核心,使它来获取手机的运营商、网络等状态信息。 CTTelephonyNetworkInfo类解析如下:获取所有运营商信息 iOS 12 后支持@property(readonly, retain, nullable) NSDictionary *serviceSubscriberCellularProviders 关闭); break; case kCTCellularDataNotRestricted: NSLog(@蜂窝移动网络状态:开启); break; default: break; }};需要注意,在iOS 中使网络需要获取户权限,如果户没有给网络权限,获取到的状态也将是未开启。

    1.1K20

    相关产品

    • iOA 应用安全访问服务

      iOA 应用安全访问服务

      腾讯iOA SaaS是一款基于零信任架构的应用安全访问云平台,为企业提供安全接入数据中心(本地、单云、混合云)的解决方案。企业客户通过iOA SaaS控制台实现对数据中心访问权限管控和终端安全管控。依托腾讯云全球加速节点,为企业员工提供快速、稳定的访问体验。适用于远程办公、数据中心接入、权限控制、终端管控等多种业务场景。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券