[自选股]项目架构
此次[自选股]项目独立开发开发采用了软件工程通用的MVC架构模式,将数据(Model)、视图(view)、控制器(Controller)解耦合。三者各自执行各自的任务,其中数据(Model)是用来存储从服务器请求下来的数据,视图(view)HTTP Client示数据。控制器在它们两者直接起到了连接作用。
总的来说MVC的目的是增加代码的重用率,减少数据表达,数据描述和应用操作的耦合度。 同时也使得软件可维护性,可修复性,可扩展性,灵活性以及封装性大大提高。
[自选股]项目实现技术点
此次[自选股]独立开发开主要运用抓包技术结合IOS开发语言来完成的,抓取网络接口和测试网络接口我们使用了Charles/HTTP Client两个工具。
它们方便了我们在开发过程中对数据来源的检查,保证数据可请求下来,以及数据可正常使用。
主要技术还是运用OC语言的UIKit框架来实现项目的整体界面,以及对界面的布局。其中界面搭建UILabel、UIButton占据了大部分内容,界面布局主要将CollectionView和TableView结合起来运用,collectionView里嵌入tableView,tableView里又嵌入UIView。再者在对数据在控制器(Controller)、和视图(view)之间进行事件传递的时候用到了Block语句块来实现,使得代码更直观。
除了主要运用IOS提供的框架之外,还集成了第三方实用框架来实现视图灵活切换,以及社会化分享可将用户想要分享的内容分享到各个微博平台,社交平台。其中股票K线图和资金柱状图用到了OC的底层框架coreGraphics来绘制。
其整个项目的难点在于对Protfolio(自选)、Markets(行情)、以及点击股票进入股票详情界面,这三个模块占据了大部分时间。在对这三部分的数据处理和对tableView分组的单独处理做了许多判断,以至于在最后要将这个app的界面的数据请求和界面贯通的时候回出现许多问题。
然后就是在使用TableView和CollectionView的时候会遇到单元格复用的问题,总结出一下几个几个注意点:
1.分组创建单元格时————》要考虑到单元格的覆用问题,对每组单元格单独创建并设置id.
2.tableView和collectionView的协议方法中做操作时(特殊情况:创建视图(列:创建表头视图)、) 要考虑协议方法是否会多次调用。。。以至于不停的创建视图( 使得原视图被新创建的视图覆盖 )
3.collectionView布局对象来控制布局
4.collectionView单元格复用的问题
1: 首先创建一个类,继承UICollectionViewCell,将你这个TableView在个类的init方法里面去创建,并添加到self.contentView上
2:当数据传过来时复写set方法
- (void)setStockData:(NSDictionary *)stockData {
if (_stockData != stockData) {
_stockDetailpictureData = stockDetailpictureData;
[selfsetNeedsLayout];
}
}
3:再到layoutSubviews方法里填充(或传递数据)
- (void)layoutSubviews {
[superlayoutSubviews];
_detailTableView.stockData =self.stockData;
_detailTableView.code =self.code;
_detailTableView.backgroundColor = [UIColorclearColor];
//在init方法里创建时添加[self.contentViewaddSubview:_detailTableView];
}
最后是对代码的重构,在项目的开发过程不免会发现正在敲的代码与之前敲过的代码实现的功能几乎一样,我们第一反应就应该要想到代码重复利用,所以我们就要对代码进行封装与重构,使得代码更加简介清晰明了,从而使得项目性能也有所提升。
5: 使用 MyCommentsCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CELL" forIndexPath:indexPath];