iOS開發(fā)小Tips

1.AFNetworking返回結(jié)果默認(rèn)回到主線程中惹恃,所以在AFNetworking的返回結(jié)果block中無需手動回歸主線程。

2.delegate盡量使用weak修飾,弱引用

3.block中的代碼不需要特別回歸注線程棺牧,設(shè)置block時在哪個線程座舍,block中的代碼就執(zhí)行在哪個線程

4.使用NSObject+MJKeyValue進(jìn)行模型轉(zhuǎn)換時,int類型可直接轉(zhuǎn)為string類型陨帆,原因不明曲秉,但可以正確的轉(zhuǎn)換過來

小技巧

新項目http不可使用
在info.plist 中加入NSAppTransportSecurity(NSDictionary)以及 NSAllowsArbitraryLoads(Bool)并設(shè)置為YES

delegate盡量使用weak修飾,弱引用

block中的代碼不需要特別回歸注線程,設(shè)置block時在哪個線程疲牵,block中的代碼就執(zhí)行在哪個線程

使用 MJExtension 進(jìn)行字典轉(zhuǎn)模型時時承二,如果模型對應(yīng)屬性為NSString
那么原始字典中對應(yīng)的鍵值對的value的類型是int或NSNumber類型
MJExtension內(nèi)部做了轉(zhuǎn)換操作。

基類常用Tips

//字符串截取纲爸,從第4個字符開始截取到末尾亥鸠,包含第4個字符
[a substringFromIndex:4];
//字符串截取,從開始截取到第4個字符识啦,不包含第4個字符
[a substringToIndex:4];
//字符串截取负蚊,從第1個字符,往后截2個字符長度
[a substringWithRange:NSMakeRange(1,2)] 

//NSString轉(zhuǎn)NSArry
NSArray *array = [@"1,2,3,4,5" componentsSeparatedByString:@","];

//NSArry轉(zhuǎn)NSString
NSString *str = [@[@"1", @"2", @"3"] componentsJoinedByString:@","];

//判斷代理是否有接收者
if ([self.delegate respondsToSelector:@selector(callBack:)]) {

}

//異步線程切換主線程
dispatch_async(dispatch_get_main_queue(), ^{
    //do something
});

//延時執(zhí)行某一步驟
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC));
    
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
  [self.webView performSelector:@selector(loadRequest:) withObject:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]];
});


電量欄導(dǎo)航欄相關(guān)

//電量欄文字改為白色顏色
// Info.plist 中 View controller-based status bar appearance設(shè)置為NO
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
//設(shè)置全局NavgationBar背景圖片
[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
//設(shè)置全局NavgationBar背景顏色
[[UINavigationBar appearance] setBarTintColor:[UIColor blueColor]];
//設(shè)置全局NavgationBar左右按鈕顏色
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
//設(shè)置全局NavgationBar標(biāo)題顏色
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}];

//Navgation造成的位置偏移或遮擋(64像素問題)
if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]){
   self.edgesForExtendedLayout = UIRectEdgeNone;
}

//隱藏單個頁面的返回按鈕
self.navigationItem.hidesBackButton = YES;

//導(dǎo)航欄背景透明
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
//背景恢復(fù)原色
[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = nil;

//Navgation完全隱藏
- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationController.delegate = self;
}

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:YES];
}

//Navgation在下一頁面再顯示
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    
    if (viewController != self && [navigationController isNavigationBarHidden]) {
        [navigationController setNavigationBarHidden:NO animated:animated];
    }
}

UI常用Tips

//從storyBoard中獲取UIViewController
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"UserInfoListViewController"];

//從Xib獲取UIViewController
RegistViewController *regist = [[RegistViewController alloc] initWithNibName:@"RegistViewController" bundle:nil];

//從storyBoard抽取自定義的UITableViewCell
CustCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCellIdentifier"];

//UITableView刪除多余的橫線
self.tableView.tableFooterView = [[UIView alloc] init];

//UITableView的Cell自適應(yīng)
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 44.0; 

//讓view保持在最上層
[self.view bringSubviewToFront:sonView];
//讓view保持在最下層
[self.view sendSubviewToBack:sonView];
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末颓哮,一起剝皮案震驚了整個濱河市家妆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冕茅,老刑警劉巖伤极,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛹找,死亡現(xiàn)場離奇詭異,居然都是意外死亡哨坪,警方通過查閱死者的電腦和手機(jī)庸疾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來当编,“玉大人届慈,你說我怎么就攤上這事》尥担” “怎么了金顿?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長牵舱。 經(jīng)常有香客問我,道長缺虐,這世上最難降的妖魔是什么芜壁? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任嫌变,我火速辦了婚禮叠赐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘展父。我一直安慰自己剪芍,他們只是感情好塞淹,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著罪裹,像睡著了一般饱普。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上状共,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天套耕,我揣著相機(jī)與錄音,去河邊找鬼峡继。 笑死冯袍,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的碾牌。 我是一名探鬼主播康愤,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼舶吗!你這毒婦竟也來了征冷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤誓琼,失蹤者是張志新(化名)和其女友劉穎资盅,沒想到半個月后调榄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡呵扛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年每庆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片今穿。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡缤灵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蓝晒,到底是詐尸還是另有隱情腮出,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布芝薇,位于F島的核電站胚嘲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏洛二。R本人自食惡果不足惜馋劈,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晾嘶。 院中可真熱鬧妓雾,春花似錦、人聲如沸垒迂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽机断。三九已至楷拳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吏奸,已是汗流浹背唯竹。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留苦丁,地道東北人浸颓。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像旺拉,于是被迫代替她去往敵國和親产上。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351