如何简单粗暴学习开发ios(4)

来源:互联网 时间:2017-01-22


28)关于@protocol

Xcode创建项目的时候自动生成的代码比如有这样的内容:


@interface AppDelegate : UIResponder <UIApplicationDelegate>

我疑惑了很久最后那个“<>”是个什么语法,找了半天才明白,这句话的含义大概相当于Java语法:


class AppDelegate extends UIResponder implements UIApplicationDelegate

其中UIApplicationDelegate是一个接口协议(@protocol),例如:


@protocol TestProtocol
@required
- (void)requiredMethod;
@optional
- (void)optionalMethod;
@end

protocol的继承:


@protocol Test2Delegate <Test1Delegate>
@end;

翻译一下










@interface
class


:
extends


<>
implements

OC(Objective-C)Java

29)Objective-C的优(qi)雅(guai)语法,方法定义
- (void) doIt:(NSString *) actorName movieName: (NSString*) value timesSeen: (int)times

大致相当于Java语法:


void doIt( String actorName, String value, int times );

OC干嘛不干脆把“:”也去掉,就可以跟文言文差不多了:p


30)浅谈MVC

Xcode天然的倾向于MVC设计模式,Xcode创建项目的时候,各种模板生成的项目中都有xxxController这样的对象。通常各个View都会配一个Controller,而用“Page-Based Application”模板创建的项目,还会有个ModelController。大体上还算合理。


相对来说,Java JDK的控件在MVC的应用上是比较繁琐的,有些控件自带MVC,其实只是一个View对象而已。比如界面上放一个JTable表格,但经常还要搭配一个DefaultTableModel来操作数据,其实反而把事情复杂化了。


MVC是设计模式中比较常见的一种,不过其概念和实现都相对宽泛,主要是为了减少耦合,有利于代码理解、维护、重用等。不过实际应用中,具体情况千差万别,M、V、C各自的职责和相互间的边界并不那么容易界定。个人习惯来说,我通常将整个程序拆分为【视图】、【视图管理】、【业务管理】、【数据封装】、【数据】几大部分。


【用户】-【视图】-【视图管理】-【业务管理】-【数据封装】-【数据】


视图:界面(仅仅是界面),相当于Interface Builder创建的xib或StoryBoard之类的东东。
视图管理:管理界面的变化。界面元素的呈现方式千变万化,而且经常有些业务逻辑并不都设计数据模型都变化,其实就是需要变换各种不同的界面形式来展示信息,用户在各种信息(page)或不同层次(master-detail)或不同形式(图形/表格)之间来回跳转。因此视图管理经常有好多工作量,可以单独作为一个部分拆分出来。
业务管理:控制业务逻辑,通常侧重于涉及数据变化的部分。
数据管理:封装对数据的操作,尤其比如数据库、文件、远程通讯等等,但不处理业务逻辑。
数据:数据库等等。

不过,既然说简单粗暴,其实经常我也把各种东西混在一起写。代码感觉“脏”得受不了的时候,重构一下,世界又清爽一些。现代IDE开发环境对重构的支持很有帮助,比如对变量或方法的引用都可以比较容易的回溯,不用全文搜索那么麻烦,相对容易判断局部重构对程序其它部分的关联和影响。


不过多人协作的大项目还是要尽量设计阶段就谨慎一点,主要是互相有接口,重构如果会影响到别人到模块,难免会有纠纷。


31)Objective-C的变量和属性(@property)

原来属性跟变量不是一个东西(-_-|||)。
简单来说,编译器对@property自动生成getter和setter方法,可以少写几行代码。通过getter和setter方法,可以定义变量为private,但getter和setter方法(默认实现就是存取变量值)实质上导致该变量相当于public,所以个人而言其实是不喜欢这种形式的。


通过设置不同的限定词,可以控制属性的读写、原子性、深浅拷贝、引用计数方式。不过总的来说,默认实现对变量控制意义不大,需要自定义控制逻辑就还是得自己写代码。
参考:OC:属性 这篇文章对属性和限定词有解释。


32)Xcode快捷键(windows键盘):








win
command(四叶花图标)


alt
option(鸡翅膀图标)


ctrl
control(^)


shift
shift(向上箭头)

windowsmac

比如在Windows常用的拷贝(ctrl+c)粘贴(ctrl+v),在Xcode快捷键(用Windows键盘的话)是拷贝(win+c)粘贴(win+v)。


33)WINDOWS与VMware MAC共享文件夹

度娘搜索出来的结果基本都是说在“虚拟机设置”-“选项”-“共享文件夹”里面设置一下就可以,但我操作多次都不成功,重装了VMTools也不行,在MAC看不到WINDOWS的文件夹。
后来终于找到这份说明 Win7 和 MAC 系统通过VMware共享文件夹,按步骤操作搞定。我用的VMware® Workstation 12 Pro,Version 12.1.1,虚拟机OS X 10.11。


34)APPLE官方Sample,以及各种文档资料

https://developer.apple.com/library/prerelease/content/navigation/


35)简书文章中插入代码框格式

为了让文章格式好看一点,学了下Markdown语法。


在个人设置中修改为采用 Markdown 编辑器
用三个反引号将代码包围起来,即显示为本文的代码框格式。参考 简书中代码框的实现
更多 Markdown 语法参考 Markdown 语法说明 (简体中文版) 还有 Markdown——入门指南



相关阅读:
Top