iOS项目重构日记】的更多相关文章

如何重构 首先,要对程序的一般架构烂熟于心,尤其是MVC,这是基本.还有就是分离存储和网络请求的逻辑. 对于一些常用的控件尽量分离复用,设置开关函数,适当的时候开启,不要的时候关闭,有必要的话还可以 延迟加载 对于一些高频率控件,比如风格统一的按钮,尽量使用 工厂方法 创建,尽量达到牵一发动全身的效果 有效利用常量 1.文件目录结构 公共部分和各功能模块的区分 公共部分和各功能模块应该区分开来,公共模块一般包含公共模型.方法.视图.第三方库.我们写的任何可被其他功能模块调用的组件都应该包含到公共…
关于MVC的争论 关于MVC的争论已经有很多,对此我的观点是:对于iOS开发中的绝大部分场景来说,MVC本身是没有问题的,你认为的MVC的问题,一定是你自己理解的问题(资深架构师请自动忽略本文). 行文过程中查阅了互联网上的大量文档,其中水平良莠不齐(最常见的就是MVC改个名就当MVVM的),当然也有许多非常有价值的参考资料,在文末会逐一列举,以供参考. iOS中的MVC和MVP Cocoa版本的MVC 根据官网上的描述, Cocoa中的MVC是这样的: Model Objects Encaps…
转:http://www.cocoachina.com/ios/20160519/16346.html 关于MVC的争论 关于MVC的争论已经有很多,对此我的观点是:对于iOS开发中的绝大部分场景来说,MVC本身是没有问题的,你认为的MVC的问题,一定是你自己理解的问题(资深架构师请自动忽略本文). 行文过程中查阅了互联网上的大量文档,其中水平良莠不齐(最常见的就是MVC改个名就当MVVM的),当然也有许多非常有价值的参考资料,在文末会逐一列举,以供参考. iOS中的MVC和MVP Cocoa版…
关于MVC的争论 关于MVC的争论已经有非常多,对此我的观点是:对于iOS开发中的绝大部分场景来说,MVC本身是没有问题的,你觉得的MVC的问题,一定是你自己理解的问题(资深架构师请自己主动忽略本文). 行文过程中查阅了互联网上的大量文档,当中水平良莠不齐(最常见的就是MVC改个名就当MVVM的),当然也有很多很有价值的參考资料,在文末会逐一列举,以供參考. iOS中的MVC和MVP Cocoa版本号的MVC 依据官网上的描写叙述, Cocoa中的MVC是这种: Model Objects En…
之前搞的Flutter版工具链已经弄完了,感兴趣的朋友可以围观下,Android版本dio库(v2.0.14)发送网络请求老是报错,去官方提了issue还没回,于是今天搞一下把Flutter模块接入到已有项目中. 首先Flutter官方已经出了wiki,教大家怎么接入.懒得看官方原文的可以看看这个简易版快速集成,先来看看效果. 一.创建Flutter模块 一般用Flutter或者React Native的团队大部分原因都是因为需要跨平台,所以在已有项目目录的上一级创建Flutter模块,譬如你的…
项目开发过程中,在完成iOS项目——项目开发环境搭建之后,我们首先需要考虑的就是我们的项目的整体框架与导航架构设计,然后在这个基础上考虑功能模块的完成. 一 导航架构设计 一款App的导航架构设计应该是符合人们的操作惯性和方便操作的特点,也应该在交互上更加合理和人性化.根据项目功能和定位不同,不同的App的导航设计应该采用不同的技术框架,目前比较常见的导航框架主要有标签式.列表式.矩阵式三大类,如下图,具体每一类的特点及详情可以参见:再谈App导航设计. 目前资讯新闻类的移动端项目的主流App框…
开源 iOS 项目分类索引大全 GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Category类型的库,附带很多自定义控件 功能不错-     BlocksKit 将Block风格带入UIKit和Founcation     cocoa-helpers 一些Cocoa的扩展 2年前的工程     CoconutKit 一系列扩展和一些自定组件     STUtils 一系列扩展包  …
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #d12f1b } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "PingFang SC"; color: #d12f1b } p.p4 {…
在<Mac系统下React Native环境搭建>配置了RN的开发环境,然后,本文记录在现有iOS项目集成React Native的过程,官方推荐使用Cocoapods,项目一开始也是使用它,只是有时安装库很慢,还不如复制粘贴库来的快,就删除它了,这里就使用手动集成的方式吧. 1. 新增React Native文件路径和json说明文件,进入项目根目录(*.xcodeproj文件所在目录): mkdir reactnative cd reactnative vim package.json  …
项目的本地化就是:iOS系统在不同语言环境下自动切换语言,从而实现一个app发布到全世界各个国家的AppStore上. 我们不仅仅需要在iOS项目中做本地化处理,在上架iOS APP的时候,也需要做对应的本地化设置哦. iOS项目中需要处理的本地化大概有以下几点: 1.APP名称 2.字符串 3.图片 4.storyboard/xib文件 5.上架设置 前置工作 首先我们要在 PROJECT -> project name -> Localizations 下添加我们需要适配的语言,这里我添加…
转载 在Xcode 6 beta里编译Cocos2d-x iOS项目时可能会失败,提示如下错误: Undefined symbols for architecture i386: "_fwrite$UNIX2003", referenced from: _unixErrorHandler in libcocos2dx iOS.a(tif_unix.o) _unixWarningHandler in libcocos2dx iOS.a(tif_unix.o) _empty_output_…
使用phonegap创建的ios项目,推送消息时,当程序在前台运行或者在后台运行状态下,推送消息过来,可以解析并且跳转: 但是在程序从后台退出的状态下,当消息推送过来的时候,点击通知栏,打开程序,程序竟然出现了”闪退“现象. 经过一番排查,发现原来phonegap创建的项目默认是没有自动引用计数的(非arc机制),而我们在 - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictio…
➠更多技术干货请戳:听云博客 我们在做项目的时候,会经常用到各种设计模式,最常见的要数 MVC (模型,视图,控制器)了.但是,今天我们要说的是另一种设计模式——MVVM. 所以 MVVM 到底是什么?下面,我们将结合代码,说明 MVVM 设计模式以及项目目录结构. 一.MVVM 模式介绍  MVVM 是 Model-View-View Model 的缩写,MVVM 听起来好像很复杂的样子,但它本质上就是MVC 的改进版.MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和…
Github上一周年的WinObjc项目最近发布了预览版本,终于等到了这一天.WinObjc项目就是Build 2015大会上微软宣布的Project IslandWood项目,致力于将iOS应用快速移植成UWP应用.废话不多说,让我们来看看WinObjc项目到底如何使用. 开始之前 开始转制iOS项目前我们要先部署好WinObjc工具,工具链如下: 一台安装了Visual Studio的Windows 10 PC,2015社区版可以直接下载:免费下载 安装转制iOS应用的WinObjc Bri…
iOS 项目中用到的一些 iOS 开源库和第三方组件 分享一下我目前所在公司 iOS 项目中用到的一些 iOS 开源库和第三方组件, 感谢开源, 减少了我们的劳动力, 节约了我们大量的时间, 让我们有更多的时间和精力能更加专注的做好自己的产品 用到的组件 1.通过CocoaPods安装 项目名称 项目信息 AFNetworking 网络请求组件 FMDB 本地数据库组件 SDWebImage 多个缩略图缓存组件 UICKeyChainStore 存放用户账号密码组件 Reachability 监…
1.项目使用的第三方开源库 项目使用了CocoaPods(类似java中的maven)管理常用的第三方库,一些特殊的单独引用,下面介绍下比较好用的几个. (1)AFNetworking 目前比较推荐的iOS网络请求组件,默认网络请求是异步,通过block回调的方式对返回数据进行处理. 需要注意的是AFNetworking对服务器返回的ContentType要求比较严格,默认只支持application/json的返回.所以可能需要添加对text/html返回的支持,否则可能无法获得返回数据. 另…
[Xamarin.iOS] Visual Studio中Xamarin.iOS项目,无法加入PCL项目参考.NuGet组件参考 解决方案 目前Visual Studio中最新版本的Xamarin.iOS项目(8.2.0.207),无法加入PCL项目参考.NuGet组件参考.这是因为iOS更新版本后,被拆成两种不同的目标平台:Xamarin.iOS(Classic).Xamarin.iOS Unified API所造成的问题,解决方案为安装下列网址的更新档「Xamarin.iOS.Portable…
默认创建工程会在MAC上面创建Git版本管理, 但是呢, 我现在想上传到svn服务器进行管理, 但是已经有个git 好像上传不了 只有把Git删了才能继续. 连问带查, 终于找到解决方案 把 .git 删掉 就是在你的ios项目文件目录下有一个.git的文件夹删掉, 开始接触ios的人一定不知道怎么弄, 因为.git文件夹是隐藏的 打开终端, 执行命令行defaults write com.apple.finder AppleShowAllFiles -bool true  显示隐藏文件 然后就…
原文地址 下载并打开xcode. 接着新建一个工程,如下图所示: 点击Create a new Xcode project,之后选择ios下的Application,点击Single View Application来创建我们的第一个项目.如图所示: 创建完项目后,我们来编写我们的第一个ios项目. 找到AppDelegate.m文件,首先在 “#import "AppDelegate.h"”下边添加: #import "ViewController.h" 然后在d…
Xamarin.iOS项目编译提示Could not AOT the assembly 错误信息:Could not AOT the assembly **************.dll 这个错误是由于AOT编译文件太大造成的.用户可以尝试修改编译选项.在项目属性窗口中,设置iPhone Build Options,选择Linker Behavior中的Link all assemblies选项…
Xamarin.iOS项目提示error MSB3174:”TargetFrameworkVersion”的值无效 错误信息:MSBulid\14.0\bin\Microsoft.Common.CurrentVersion.targets(3506.5): error MSB3174:”TargetFrameworkVersion”的值无效这个问题会在Xamarin.iOS和Xamarin.Android中出现.根据项目类型不同,解决办法不同.在Xamarin.iOS项目中,需要修改该项目的.c…
做这些的前提是你配置好了所有的证书,如果还没先去配置证书吧. 1.打开需要生成ipa的ios项目.2.在运行按钮的后面选择ios Device3.点击Product 按钮,选择第五个Archive4.点击Distribute 的按钮5.选择三个单选按钮 Export as Xcode Archive .点击next6.这时候会让你选择存放路径,和名字,随便写.7.你可以去你选择的路径找生成的文件了,注意这时候还不是ipa文件,8.右键点击生成的文件选择“显示包内容”,然后双击打开Products…
ios项目中引用其他开源项目,今天再次复习了,记个备注. 1. 将开源项目的.xcodeproj拖入项目frameworks 2. Build Phases下 Links Binary With Libraries 引入.a文件.Target Dependencies里引入开源项目文件 3. Build Setting下的 Search Paths 里 Header Search Paths 加入开源项目src目录 例:$(SOURCE_ROOT)/IBAForms/headers ,IBA放在…
转自无网不剩的博客 网上相关的资源不多,开源的且质量还不错的iOS项目也是少之又少,最近正好跟同事合作了一个iOS项目,来说说自己的一些想法.   目录结构 AppDelegate Models Macro General Helpers Vendors Sections Resources   一个合理的目录结构首先应该是清晰的,让人一眼看上去就能大概了解目录的职责,且容易应对新的变化.   AppDelegate 这个目录下放的是AppDelegate.h(.m)文件,是整个应用的入口文件,…
手把手教你如何搭建iOS项目基本框架 今天我们来谈谈如何搭建框架,框架需要做一些什么. 第一步:找到我们的目标我们的目标是让其他开发人员拿到手后即可写页面,不再需要考虑其他的问题. 第二步:我们需要做哪些东西各位跟着我一步一步来进行. 假定我们即将要写的项目是一个tabbar+navgation的项目结构. 1. 新建工程 1.1 删除不必要类目 选择Single ViewApplication,命名为HomeHome删除选中的三项. 删除选中的三项 1.2 修改info.plist 1.删除i…
公司新项目就要着手研发了,希望能为这个项目多准备点知识.回想自己做过的项目,目录结构的划分总不如我的心意,有些目录命名不规范导致表达不明确,有些目录因为不具有代表性,导致在实际中不能充分发挥作用,导致随意添加目录,使得目录层次更复杂.因此今天着手设计一个语义更加明前,分层更加清晰的,又具有iOS项目普遍性的目录结构.下面就介绍下我最新设计的目录结构,目前我拿一个旧的项目用新的设计结构调整后,确实感觉清晰很多,您可以看看后面我展示的项目调整目录前后的效果. 我新设计的目录结构 MVCS(Model…
原文链接:http://www.cocoachina.com/ios/20150104/10824.html iOS项目的完整重命名方法图文教程 前言:在iOS开发中,有时候想改一下项目的名字,都会遇到很多麻烦.直接改项目名吧,XCODE又不会帮你改所有的名字.总是有很多文 件.文件夹或者是项目设置的项.而且都是不能随便改的,有时候改着改着,编译不了.所以各位重命名项目时,记得先备份好一份噢.本文我会介绍一种方法,是 我自己参考了很多资料得出的总结. 为什么说是完整呢?因为改名之后,你不会再看到…
//1.1获取在Xcode项目打开的情况下创建的Plist文件 NSString *path = [[NSBundle mainBundle]pathForResource:@"ProfessionClassify" ofType:@"plist"]; //1.2定义数组接收文件 NSMutableArray *tempArray = [NSMutableArray arrayWithContentsOfFile:path]; //2.1获取ios项目沙盒中的Pli…
转自:http://www.cnblogs.com/macroxu-1982/archive/2012/07/31/2616389.html 下面是单个窗体项目例子,我们从这个项目开始,说明ios项目文件结构. 项目清单说明: 1 supporting files 文件夹 supporting files中放置了项目支持文件,下面是各种文件功能说明 helloword-info.plish 文件 :放置项目属性:如icon,项目显示名称,版本号等. infoplist.strings文件:放置项…
设计的项目架构主要引用MVVM+MVC架构,并以功能模块分级.以下为目录结构. 初级目录: 我们只需要关注SGZH文件夹下的目录,其他为Xcode管理的目录.可以看到此目录为项目初级目录,我们开发过程只需对初级目录内的文件进行操作,其主要划分为3大块: AppDelegate: AppDelegate是程序入口,程序启动和显示逻辑都定义在内部,主要可以让开发人员快速找到代理文件并了解程序从启动到显示过程,也可以快速进行一些初始化测试. Resource: 此目录主要存放一些项目资源文件,如项目切…