日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开源:Sagit.Framework For IOS 开发框架

發(fā)布時間:2025/4/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开源:Sagit.Framework For IOS 开发框架 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一:創(chuàng)造Sagit開發(fā)框架的起因:

記得IT連創(chuàng)業(yè)剛進行時,招了個IOS的女生做開發(fā),然后:

----------女生的事故就此開始了-----------

1:面試時候:有作品,態(tài)度也不錯,感覺應(yīng)該能做點事。

2:剛招進來:發(fā)現(xiàn)每天都在看文章,但遲遲不見有點東西。

3:過程問答:現(xiàn)在在整些什么?回答在搭框架。

4:發(fā)現(xiàn)危機:不小心看到她用單手指敲鍵盤,感覺不妙。

5:處理危機:速學(xué)IOS,一個星期后,看完她代碼,談話Over!

----------女生的事故就到此結(jié)束了----------

在速學(xué)IOS時,快速掃了不少培訓(xùn)的視頻教程,發(fā)現(xiàn)套路都是很原始。

這些原始的套路了解可以,但若這些過來搬到項目來,就禍害無窮了。

按照當(dāng)時創(chuàng)業(yè)的成本考慮,很大概率招來的人是以下三種:

1: 剛從培訓(xùn)班出來的;

2:剛看完培訓(xùn)視頻過來;

3:剛用培訓(xùn)視頻的套路禍害完一個項目后跳過來的。

為了對下一個開發(fā)人員有所約束:

讓一個有3-4年開發(fā)經(jīng)驗的朋友幫忙整一下框架。

看完他整的框架,發(fā)現(xiàn)只是常規(guī)性的工具類分文件夾。

給他提了一個要求,把其中一個網(wǎng)絡(luò)請求重新封裝一下。

回頭再看,雖有所改進,但還是不盡我意。

也許可以指導(dǎo)繼續(xù)改進,但時不以我,也不以他。

于是自己動手了:框架大體完成60%時,招了個男開發(fā)人員。

----------男生的事故就此開始了-----------

為了趕項目,讓新人在框架的基礎(chǔ)上動工了。

鑒于新人開發(fā)人員能弄點東西,加上有框架的輔助,就撒手了。

由于框架的不完善,以及對框架的不理解,遇到點小坑就吐槽。

吐槽多了,也只能同意他混著其它的框架一起整了。

再后來,多的數(shù)不清的坑和閃退事故。

早期關(guān)注IT連及用IT連App的童學(xué),就清楚了。

或者在我之前的IT連創(chuàng)業(yè)系列文章里應(yīng)該可以感知了。

現(xiàn)在,他也Over了!

----------男生的事故就到此結(jié)束了-----------

重新接手回IOS后,發(fā)現(xiàn)代碼邏輯也是一團槽,好在之前有一部份還是按框架走。

最近花了一周多的時候,理解,并開始重構(gòu)整個項目的代碼。

同時對框架之前已有的依賴關(guān)系也進行了抽離,并重新重構(gòu)了一下框架。

目前對框架的重構(gòu)的工作已經(jīng)進行了70%-80%,還有一些功能想了還沒加上。

但整體并不影響基礎(chǔ)功能,所以是時候把Sagit的框架和大伙分享了!

二:關(guān)于框架起名:

自從:CYQ.Data 框架這名字被大伙吐槽之后,后續(xù)的框架命名,就顯的格外用心了。

在研究了行星、星座、水果、植物、動物、顏色、形狀等英文名稱之后。

終于有了:白羊(Areis.DevFramework For DotNet)、

再也有了:金牛(Taurus.MVC For DotNet)

之后沒了:雙子(Gemini.workflow For DotNet) 工作流引擎目前難產(chǎn)中(寫了開頭,后來沒空折騰)。

因此,湊齊黃金十二宮,召換雅典娜,就成了我來地球最神秘的任務(wù)了!

這次越級選了:Sagittarius (射手)

一來是ST的前綴簡寫剛好對應(yīng)的現(xiàn)在創(chuàng)業(yè)公司的名字:隨天。

二來取前半部做框架名,簡寫:Sagit(發(fā)音:射日,很和諧發(fā)現(xiàn)有木有)

三:框架的適用場景:

1:研究學(xué)習(xí):

A:工作幾年之后,開發(fā)功能已不是問題,需要有點新思維來突破受限的瓶頸。

看懂框架代碼不難,主要是學(xué)習(xí)思維,多思考,并多訓(xùn)練自己怎么寫。

B:對于在培訓(xùn)行業(yè)的教師,可以在培訓(xùn)結(jié)束前用框架的思維引導(dǎo)一下新人,再放他們出來。

2:項目開發(fā):

A:開發(fā)人員沒有框架的概念。

B:目前沒有其它可選擇的框架。

一般的說,除了游戲,其它常規(guī)性的項目都適合。?

?

下面對框架進行簡單的介紹,也只能是簡單介紹:

Sagit 創(chuàng)新一:簡潔的相對布局語法

1:統(tǒng)一標(biāo)準(zhǔn)參數(shù),自適配手機屏幕,實現(xiàn)AutoLayout。

A:框架默認(rèn)以IPhone6的像素為標(biāo)準(zhǔn)參考體系:750*1334。

B:開發(fā)時,都以標(biāo)準(zhǔn)的像素單位為參數(shù)。

C:運行時,會自動適配成對應(yīng)比例的參數(shù)。

(PS :如果需要修改標(biāo)準(zhǔn),可在STDefineUI.h文件中修改定義)

看著UI給的參數(shù)標(biāo)注圖,輕松布局:

2: 簡潔的相對布局語法,一行看盡

以上圖片為例,做布局

A:相對父元素的布局 Logo:

[[[[self addImageView:@"login_logo"] width:170 height:170] relate:Top v:288] toCenter:X];

B:相對固定元素的布局,下面這行代碼是引用其它地方的:

[[[[self addImageView:@"icon_verify"] width:48 height:48] onBottom:pwdIcon y:26] toCenter:X];

3:可局部刷新的布局

以下這行代碼,會對批定的視圖的子視圖重新進一次相對布局。

[self refleshLayout];

?

Sagit 創(chuàng)新二:徹底分離的View與Controller

記得很早以前,我寫過一篇文章:Objective-C iOS純代碼布局 一堆代碼可以放這里!

那時候只是研究的前奏,并沒有實現(xiàn)完整分離,當(dāng)然現(xiàn)在是解決了。

舉個例如:一個文本框一個按鈕,點擊按鈕彈出文字框的內(nèi)容。

之前的做法,你都會在Controller里寫一堆UI相關(guān)的創(chuàng)建方法,或者需要將某些UI定義為全局變量,以便后續(xù)再去獲取UI的值。

最差也是我之前未完成時留下的那點手尾:(下面紅色的,在Controller中需要定義一個具體的LoginView變量)

好了,現(xiàn)在這個問題已經(jīng)被我徹底解決了,0入侵已經(jīng)成為了事實,下面看示例代碼:

LoginView 的代碼:創(chuàng)建了一個文本框和一個點擊按鈕

@interface LoginView : STView //這是LoginView.h@end@implementation LoginView //這是LoginView.m-(void)initUI {[[self addTextField:@"userName" placeholder:@"輸入手機號"] x:0 y:0 width:100 height:100];[[self addButton:@"btnLogin" title:@"登錄"] onRight:self.lastSubView.PreView x:10]; } @end

LoginController 的代碼:有一個按鈕事件,獲取手機號用戶名然后彈出來提示

@interface LoginController : STController // 這是LoginController.h@end@implementation LoginController //這是LoginController.m-(void)btnLoginClick {NSString* userName=[self uiValue:@"userName"];[self.box prompt:userName]; }

調(diào)用:

self.window.rootViewController = [LoginController new];

效果:(為了截圖,特意新建了個demo...)

解析:

LoginView和LoginController兩個文件代碼里,并沒有互相引用的地方。

但是UI和事件卻補神奇的關(guān)聯(lián)起來了,這是怎么做到的呢?

秘密就在STView和STController文件的源碼中。

Sagit 創(chuàng)新三:表單的自動提交與回顯

如果你需要提交一個表單的數(shù)據(jù),你只需要這樣:

-(void)btnLoginClick { // NSString* userName=[self uiValue:@"userName"]; // [self.box prompt:userName]; [self.http post:@"/Login" paras:self.formData success:^(STModel *result) {if(result.success)//如果:提交成功 {[self.stView loadData:result.msg];//將返回的數(shù)據(jù)回顯到控件 }}]; }

解析:

self.formData可以自動收集UI表單的內(nèi)容。

self.stView loadData 可以自動將字典的數(shù)據(jù)寫回UI中。

一切就是這么Easy,在這種常規(guī)的提交中,批量來批量去,不需要有Model的存在。

這里暫就不提供Demo了,后續(xù)文章再跟進。

Sagit 其它功能一:月下無限連的屬性語法:

UITextField *userName= [[[self addTextField:@"UserName" placeholder:@"手機號碼"] width:372 height:68] onRight:mobileIcon x:30 y:-10];[[userName maxLength:11] keyboardType:UIKeyboardTypeNumberPad];

?不用再去這樣寫的憔碎了:

mobileTF.keyboardType = UIKeyboardTypeNumberPad;// UIKeyboardTypeNamePhonePad;mobileTF.MaxLength=11;// = (id)self.Controller;

Sagit 其它功能二:封裝了適合C#玩家的簡潔語法

OC的命名總是很長,做為了一名C#的大神,有義務(wù)把C#簡潔的語法帶過來。

例如:

@interface NSString(ST)-(NSString*)reverse; -(BOOL)isInt; -(BOOL)isFloat; -(NSString*)append:(NSString*)string; -(NSString*)replace:(NSString*)a with:(NSString*)b; -(NSString *)replace:(NSString *)a with:(NSString *)b isCase:(BOOL)isCase; -(NSArray<NSString*>*)split:(NSString*)separator; -(NSString*)toUpper; -(NSString*)toLower; -(BOOL)startWith:(NSString*)value; -(BOOL)endWith:(NSString*)value; -(BOOL)contains:(NSString*)value; -(BOOL)contains:(NSString*)value isCase:(BOOL)isCase; -(BOOL)isEmpty; +(BOOL)isNilOrEmpty:(NSString*)value; +(NSString*)toString:(id)value; -(NSString*)trim;

Sagit 其它功能...

1:網(wǎng)絡(luò)的請求只有三個:

[self.http get ...] [self.http post ...] [self.http upload ...]

2:消息提示框:

[self.box prompt...] [self.box alert..] [self.box confirm...]

其它等。。。就不在這里介紹了,后續(xù)會慢慢寫文介紹。

Sagit 開源地址:

GitHub:https://github.com/cyq1162/Sagit

目前以源碼方式提供,并未打包成類庫。

新開的:IOS Sagit框架?:QQ群:702724292

總結(jié):

1 :框架剛開源,預(yù)示著在未來的日子里,升級與變動是少不了的。

2:框架只是個基礎(chǔ),完整的項目架構(gòu),還需要根據(jù)不同的業(yè)務(wù)搭配不同的第三方類庫。

3:后續(xù)會將IT連和IT戀兩個App的源碼,做為示例教程,和大伙分享。

4:最后,依然感謝大伙關(guān)注我正在進行的IT連創(chuàng)業(yè)項目!

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的开源:Sagit.Framework For IOS 开发框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。