摘要:
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则:(图1 未遵循接口隔离原则的设计) 这个图的意思是:类A依赖接口I中的方法1、方法2、方法3,类B是对类A依赖的实现。类C依赖接口I中的方法1、方法4、方法5,类D是对类C依赖的实现。对于类B和类D来说,虽然他们都存在着用不到的方法(也就 阅读全文
posted @ 2014-02-16 17:44
yulang
阅读(356)
评论(0)
推荐(0)
摘要:
3.1 依赖倒置原则的定义 依赖倒置原则(Dependence Inversion Principle,简称DIP)这个名字看着有点别扭,“依赖”还“倒置”,这到底是什么意思?依赖倒置原则的原始定义是:High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions。翻译过来,包含三层含义:高层模 阅读全文
posted @ 2014-02-16 17:39
yulang
阅读(2973)
评论(0)
推荐(1)
摘要:
肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。定义2:所有引用基类的地方必须能透明地使用其子类的对象。问题由来:有一功能P1,由类A完成。现需要将功能P1进行扩展,扩展后的功能为P,其中P由原有功能P1与新功能P2组成。新功能P由类A的子类B来完成 阅读全文
posted @ 2014-02-16 17:33
yulang
阅读(340)
评论(0)
推荐(0)
摘要:
开发封闭原则(Open-Closed Principle OCP)Software entities(classes,modules,functions etc) should open for extension ,but close for modification. 什么意思呢? 所谓开放封闭原则就是软件实体应该对扩展开发,而对修改封闭。开放封闭原则是所有面向对象原则的核心。软件设计本身所追求的目标就是封装变化,降低耦合,而开放封闭原则正是对这一目标的最直接体现。 开放封闭原则主要体现在两个方面: 对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。 对修改封闭 阅读全文
posted @ 2014-02-16 17:30
yulang
阅读(344)
评论(0)
推荐(0)
摘要:
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险。 说到单一职责原则,很多人都会不屑一顾。因为它太简单了。稍有经验的程序员即使从来没有读过设计模式、从来没有听说过单一职责原则,在设计软件时也会自觉的遵守这一重要原则,因为这是常识。 阅读全文
posted @ 2014-02-16 17:28
yulang
阅读(174)
评论(0)
推荐(0)
摘要:
部分内容摘自《Objective-C基础教程》和互联网引用计数 Cocoa采用了引用计数(reference counting)机制,每一个对象有一个关联的“整数retainCount”用于记录对象的使用情况。对象被引用时retaincount+1,外部环境结束对象的使用后retainCount-1.当retaincount为0的时候,该对象被销毁。 当我们使用alloc、new或者copy的我们需要销毁这个对象。release函数,只是将对象的retainCount值减1,并不是删除对象。当retainCount==0的时候,系统会发给对象一个dealloc消息,另外:千万不要手动... 阅读全文
posted @ 2014-02-16 16:53
yulang
阅读(312)
评论(0)
推荐(0)
摘要:
复制代码SomeObject *obj = [[SomeObject alloc] initWithCenter:centerPoint radius:radius];和复制代码SomeObject *obj =[SomeObject alloc];[obj initWithCenter:centerPoint radius:radius];这两句不是等效的。第二句的执行结果可能返回无效对象。 阅读全文
posted @ 2014-02-16 16:22
yulang
阅读(215)
评论(0)
推荐(0)
摘要:
NSNumberJava代码+(NSNumber*)numberWithInt:(int)value;+(NSNumber*)numberWithDouble:(double)value;-(int)intValue;-(double)doubleValue;NSNumber可以将基本数据类型包装起来,形成一个对象,这样就可以给其发送消息,装入NSArray中等等。NSNumber * intNumber=[NSNumber numberWithInt:100];NSNumber *floatNumber=[NSNUmber numberWithFloat:100.00];int i=[int 阅读全文
posted @ 2014-02-16 16:06
yulang
阅读(646)
评论(0)
推荐(0)
摘要:
上面一篇文章介绍了coredata的有关基本概念,由于大部分是参考别人文章中的内容,所以感觉有点虚,而且估计也是比较难以理解,下面这篇文章通俗一点说说学习coredata后的一些理解,然后给出一个简单的demo,有错漏的地方,欢迎读者指正。其实与coredata有关的有几个概念:数据表 --–> Entity (You usually define entities in a managed object model usingthe data modeling tool in Xcode).表格的记录 --> NSManagedObject (一个表记录就是一个NSManaged 阅读全文
posted @ 2014-02-16 13:41
yulang
阅读(250)
评论(0)
推荐(0)
摘要:
下面开始学习一下CoreData。Core Data不是一个关系型数据库,也不是关系型数据库管理系统(RDBMS)。Core Data 为数据变更管理、对象存储、对象读取恢复的功能提供了支持。 它可以使用SQLite作为持久化存储的类型。 它本身并不是一个数据库(这点很重要,比如,你可以使用Core Data来记录数据变更,管理数据,但并不能用它向文件内存储数据)。首先简单的介绍一下概念:数据表 --–> Entity (You usually define entities in a managed object model usingthe data modeling tool in 阅读全文
posted @ 2014-02-16 13:39
yulang
阅读(297)
评论(0)
推荐(0)
摘要:
在写sina 微博界面的过程中使用到了cell,那么就是在cell上添加一些控件,但是由于每条微博的内容都是不同的,所以在显示的过程中,出现了内容重叠的问题,其实就是UITableViewCell重用机制的问题。[cpp]view plaincopy-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath{staticNSString*CellIdentifier=@"Cell";UITableViewCell*cell=[tableVi 阅读全文
posted @ 2014-02-16 13:37
yulang
阅读(334)
评论(0)
推荐(0)
摘要:
github链接地址MBProgressHUD是一个开源的第三方类库实现了很多种样式的提示框,类似Activity indicator,使用上简单、方便,并且可以对显示的内容进行自定义,功能很强大,很多项目中都有使用到。 MBProgressHUD is an iOS drop-in class that displays a translucent HUD with an indicator and/or labels while work is being done in a background thread. The HUD is meant as a replacement fo.. 阅读全文
posted @ 2014-02-16 13:36
yulang
阅读(394)
评论(0)
推荐(0)
摘要:
首先要弄懂几个基本的概念。一)三个结构体:CGPoint、CGSize、CGRect1. CGPoint[plain]view plaincopy/*Points.*/structCGPoint{CGFloatx;CGFloaty;};typedefstructCGPointCGPoint;看到这个想必你已经懂了,不再解释。2. CGSize[plain]view plaincopy/*Sizes.*/structCGSize{CGFloatwidth;CGFloatheight;};typedefstructCGSizeCGSize;不解释。3.CGRect[plain]view plain 阅读全文
posted @ 2014-02-16 13:29
yulang
阅读(8677)
评论(0)
推荐(1)
摘要:
在写程序的时候发现,iOS下的坐标、位置很容易弄乱,特别是在不同的坐标系统中,必须完成弄明白一些概念才能做相应的变化,例如CoreImage和UIView的坐标系统就截然不同,一个是以屏幕的左上角为原点,一个是以屏幕的左下角为原点。总体上,IOS中包含UIKit坐标系(X轴正方向向右,Y轴正方向向下)和标准的Quartz 2D绘图坐标系(X轴正方向向右,Y轴正方向向上),下面,解释一些相关的概念:一、UIView的bounds属性定义了一个矩形,描述了一个UIView的位置和大小,注意,其参照系统是自身,所以bounds.origin属性默认是(0, 0),而bounds.size的和fram 阅读全文
posted @ 2014-02-16 13:27
yulang
阅读(796)
评论(0)
推荐(0)
摘要:
本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和讨论。请不要将本文的部分或全部内容用于商用,谢谢合作。欢迎转载本文,但是转载请注明本文出处:http://www.onevcat.com/2012/06/arc-hand-by-hand/本文适合人群:对iOS开发有一定基础,熟悉iOS开发中内存管理的Reference Counting机制,对ARC机制有听闻很向往但是一直由于种种原因没有使用的童鞋。本文将从ARC机理入手对这个解放广大iOS开发者的伟大机制进行一个剖析,并逐步引导你开始使用ARC。一旦习惯ARC,你一定会被它的简洁高效所征服。写在开 阅读全文
posted @ 2014-02-16 13:24
yulang
阅读(243)
评论(0)
推荐(0)
摘要:
如果 iPhone 5 把屏幕做大,分辨率跟 iPhone 4 不一样,那以后做 iOS App 怎么处理不同分辨率的问题呢?1 条评论分享按票数排序按时间排序8 个回答赞同11反对,不会显示你的姓名Yop,2年iOS技术累积谢振宇、知乎用户、李力等人赞同题目已经假设了iPhone5的屏幕分辨率(而不是屏幕大小)会变大的情况下,不知道下面那些否决这个前提的算不算离题了...自从iPhone4把屏幕分辨率提升了之后,苹果给开发者提供了一个point的概念,来取代旧的分辨率的概念。它们假定屏幕上的定位和大小是用point来描述的,而iPhone3和iPhone4的屏幕是由相同的point组成的,都 阅读全文
posted @ 2014-02-16 13:20
yulang
阅读(227)
评论(0)
推荐(0)
摘要:
iOS 设备的屏幕尺寸、分辨率及其屏幕边长比例详细情况是怎样的?根据屏幕尺寸和分辨率,ios现在数起来有6个版本。一,3GS;二,4s为代表;三,iphone5;四,ipad2为代表;五,ipad4为代表;六,ipad mini。只是分辨率不一样的情况,如一二或者四五相比,开发时提供两种分辨率就可以了,应用自动识别?只是尺寸不一样的情况,如四六相比,开发时完全没有影响?分辨率以及尺寸都不一样的情况,如二三相比,又如何?----------------------------------------------------------------------------------------- 阅读全文
posted @ 2014-02-16 13:18
yulang
阅读(576)
评论(0)
推荐(0)
摘要:
本教程通过命令行来阐述分布版本控制系统Git的使用。演示系统选取的是Linux(Ubuntu),但是在其他系统上也能功能,例如Windows系统。内容索引1. Git1.1. Git是何方神圣?1.2.重要的术语1.3.索引(stage)2. 安装3. 配置3.1. 用户信息3.2. 高亮显示3.3. 忽略特定的文件3.4. 使用.gitkeep来追踪空的文件夹4. 开始操作Git4.1. 创建内容4.2. 创建仓库、添加文件和提交更改4.3. diff命令和commit修改4.4. Status, Diff和Commit Log4.5.更正提交的信息 - git amend4.6. 删除文件 阅读全文
posted @ 2014-02-16 13:13
yulang
阅读(246)
评论(0)
推荐(0)
摘要:
一,打开SCM在xcode中,点击菜单:File -> Source Control –> Repositories二,连接SVN服务器1,2,配置SVN服务器地址(http://192.168.85.228/svn/repos1)3,输入用户名密码4,配置完成(Root目录表示svn服务器的根目录)三,上传新项目1,点击下边的 ‘Import’ 菜单,然后选择你想上传的项目的根目录这里假设我们选择上传的项目为: demo,则上传结束后,结果如下所示:Note: 这样上传后,你本地的项目,并没有在SVN控制之下,需要执行 四,下载项目 ,覆盖你本地的项目。四,下载项目1,选中你想下 阅读全文
posted @ 2014-02-16 13:10
yulang
阅读(275)
评论(0)
推荐(0)
摘要:
1、Xcode4中苹果有自带的SVN软件------>Organizer------>Repositories2、SVN checkout到本地后,删除本地file,对服务器有影响吗?不会影响服务器,当你执行“svn update”时会zai再次被自动下载;当删除后再执行“svn commit”就会在服务器上也对应删除。3、连接服务器点击file-》repositories-》点击坐下边的“+”-》然后名字及svn服务器的地址,还有type选中subversion然后next等等了。4、Xcode4下,SVN中常用命令Commit提交checkout将服务器上下载到本地(我个正在使 阅读全文
posted @ 2014-02-16 13:09
yulang
阅读(338)
评论(0)
推荐(0)
摘要:
Xcode 是开发人员建立 Mac OS X 应用程序的最快捷方式,也是利用新的苹果电脑公司技术的最简单的途径,而SVN是版本控制工具,那么Xcode SVN又是什么呢?如何配置Xcode SVN?Xcode SVN配置方法 Mac自带svn,所以我们就不需要下载了,稍稍修改一下subversion配置就能使用。大大教了两种方法:第一步,配置 Subversion Leopard中自带了SVN,但Xcode的项目文件中,并不是所有文件都适于加入SVN中进行管理,比如编译后的文件和编译过程中产生的文件,这些文件不属于源代码,应该告诉svn忽略掉,方法: 编辑 ~/.subversion... 阅读全文
posted @ 2014-02-16 13:07
yulang
阅读(477)
评论(0)
推荐(0)
摘要:
Xcode底部的小黑盒是我们调试时的好朋友,它可以输出日志信息、错误信息以及其他有用的东西来帮你跟踪错误,除了可以看到日志直接输出的信息外,我们编程过程中也可以在某些断点停留,来检查app的多个方面。AD:2013云计算架构师峰会课程资料下载为什么你的数组包含3个项目而不是5个?为什么你的游戏运行缓慢?这些都跟调试有关,调试是开发过程中必不可少的一部分。本文所列举了一些重要的调试功能(当然并不全面)可以帮你用更少的时间来解决bug问题。本文内容主要包括3个方面:使用console检查app状态进行日志记录,并熟练的驾驭NSLog使用对象的生命周期来跟踪内存的使用。使用Console检查app状 阅读全文
posted @ 2014-02-16 13:00
yulang
阅读(317)
评论(0)
推荐(0)
摘要:
简介在IPhone程式开发中,记忆体泄漏(内存泄漏)是个很容易发生的情况,因为IPhone必须自行作记忆体管理。现在的开发者,大多习惯用的。NET或Java的等有垃圾回收机制的开发语言来作开发,因此可能较不习惯自行释放內存。背景从我首次接触的Xcode开发IPhone程式已有三个半月,这段时间中,我看过不少如何找出内存泄漏的文章,可是由于基本观念不够好,绕了不少远路。在IPhone程式开发中,使用NSLog直接在控制台印出retainCount也是一个检视內存泄漏的方法,但是的XCode提供了更方便的泄漏工具供开发者使用。介于自身观念较差,因此刚开始使用泄漏的时候,也花了不少时间走过弯路,因此 阅读全文
posted @ 2014-02-16 12:58
yulang
阅读(594)
评论(0)
推荐(0)
摘要:
一、概述1.掌握调试技巧,调试技术最基本,最重要的调试手段包括:单步跟踪,断点,变量观察等。单步跟踪(Step)所谓单步跟踪是指一行一行地执行程序,每执行一行语句后就停下来等待指示,这样你就能够仔细了解程序的执行顺序,以及当时的各种状况。断点(Breakpoint)断点是调试中非常重要的一个手段。由于在执行到某些代码前需要执行许多其它代码,不可能用单步跟踪一条一条执行过来,这时只要在需要暂停的地方设置一个断点,然后让程序运行,当执行到这个断点位置时不需要用户干预就会暂停并返回集成调试程序.断点必须位于可执行代码行上,凡设置在注释,空白行,变量说明上的都是无效的。另外,断点既可以在设计状态下设置 阅读全文
posted @ 2014-02-16 12:56
yulang
阅读(448)
评论(0)
推荐(0)
浙公网安备 33010602011771号