手機新聞時時在更新,而且內容格式不一,對於開發者來說必須好好進行需求分析
今天講的這些問題適合初學者學習
這個專案使用了mvc 設計思路 將資料 view controller 進行分離 分別進行封裝
這個專案 有幾個模組 有四種不同的cell 裡面的內容 也不同 ,我們要對其進行一層層封裝
好的**不是一下完成的 我們需要先將基本功能完成,然後對我們的**進行重構,優化
這樣以來**的質量會提公升,並且易於維護,增加了這款軟體的生命週期
上主要**了:
//
// qhviewcontroller.h
#import @inte***ce qhviewcontroller : uiviewcontroller
@end
// qhviewcontroller.m
#import "qhviewcontroller.h"
#import "qhnews.h"
#import "nsarray+ext.h"
#import "qhlargecell.h"
#import "qhlistcell.h"
#import "qhorigincell.h"
@inte***ce qhviewcontroller ()@property(nonatomic,strong)nsarray *newses;
@end
@implementation qhviewcontroller
-(nsarray *)newses
_newses = objs;
}return _newses;
}#pragma mark uitableviewdatasource **方法
-(nsinteger)numberofsectionsintableview:(uitableview *)tableview
-(nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section
-(uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath
cell.textlabel.text = @"test";
*/qhnews *news = self.newses[indexpath.row];
if ([news.category isequaltostring:@"large"])
if ([news.category isequaltostring:@"list"])
if ([news.category isequaltostring:@"origin"])
return cell;
}-(cgfloat)tableview:(uitableview *)tableview heightforrowatindexpath:(nsindexpath *)indexpath
if ([news.category isequaltostring:@"list"])
if([news.category isequaltostring:@"origin"])
return 120;
}return 100;
}-(bool)prefersstatusbarhidden
- (void)viewdidload
- (void)didreceivememorywarning
@end
檢視封裝:
//
// qhlargecell.h
#import #import "qhnews.h"
@inte***ce qhlargecell : uitableviewcell
@property(nonatomic,strong)qhnews *news;
+(id)largecellwithtableview:(uitableview *)tableview;
@end
//
// qhlargecell.m
#import "qhlargecell.h"
@inte***ce qhlargecell()
@property (weak, nonatomic) iboutlet uilabel *titlelabel;
@property (weak, nonatomic) iboutlet uiimageview *pictureimageview;
@property (weak, nonatomic) iboutlet uilabel *sourcelabel;
@property (weak, nonatomic) iboutlet uilabel *timelabel;
@end
@implementation qhlargecell
+(id)largecellwithtableview:(uitableview *)tableview
-(void)setnews:(qhnews *)news
- (void)awakefromnib
- (void)setselected:(bool)selected animated:(bool)animated
@end
資料模型封裝
//
// qhnews.h
//建立資料模型
#import @inte***ce qhnews : nsobject
/** * 新聞條目分類
*/@property(nonatomic,copy)nsstring *category;
/** * 記錄陣列
*/@property(nonatomic,strong)nsarray *pics;
/** * 資料**
*/@property(nonatomic,copy)nsstring *source;
/** * 發布時間
*/@property(nonatomic,copy)nsstring *time;
/** * 標題
*/@property(nonatomic,copy)nsstring *title;
/** * 用來記錄單張
*/@property(nonatomic,copy)nsstring *picture;
/** * 用來記錄推廣軟體的名稱
*//**
* 推廣軟體
*/@property(nonatomic,copy)nsstring *icon;
@property(nonatomic,strong)qhnews *news;
+(id)newswithdict:(nsdictionary *)dict;
-(id)initwithdict:(nsdictionary *)dict;
@end
//
// qhnews.m
#import "qhnews.h"
@implementation qhnews
+(id)newswithdict:(nsdictionary *)dict
-(id)initwithdict:(nsdictionary *)dict
return self;
}- (nsstring *)description
@end
python軟體開發目錄 軟體開發目錄規範
為了提高程式的可讀性與可維護性,我們應該為軟體設計良好的目錄結構,這與規範的編碼風格同等重要。軟體的目錄規範並無硬性標準,只要清晰可讀即可,假設你的軟體名為foo,筆者推薦目錄結構如下 foo core 存放業務邏輯相關 core.py api 存放介面檔案,介面主要用於為業務邏輯提供資料操作。ap...
迭代軟體開發
迭代軟體開發 整理 一 迭代軟體開發介紹 在迭代式開發方法中,整個開發工作被組織為一系列的短小的 固定長度 如 3周 的小專案,被稱為一系列的迭代。每一次迭代都包括了需求分 析 設計 實現與測試。採用這種方法,開發工作可以在需求被完整地確定之前啟動,並在一次迭代中完成系統的一部分功能或業務邏輯的開發...
軟體開發流程
課程的主講老師是msdn的特約講師邵志東先生。課程中間,邵志東老師介紹了軟體開發流程 程式設計師基本素質 關於質量控制和開發模板及專案組建設。邵老師首先介紹了軟體開發的流程,他把軟體開發分為了兩大類,即專案開發及產品開發。專案開發是公司根據某一客戶的需求單獨為某一客戶訂製的軟體 產品開發是公司針對某...