業(yè)務需求是固定搜索欄searchbar在view上症副,即使?jié)L動也不影響店雅,一開始直接設置frame,但一點擊就會消失掉贞铣,不知為什么闹啦,網上找不到解決方法,后來想了一下換了一種思路解決了辕坝,代碼如下窍奋,把搜索欄放到一塊UIView里面,調整UIView的frame來addsubview到你需要的位置,代碼如下
UIView*searchBarView = [[UIViewalloc]initWithFrame:CGRectMake(0.0,64.0,ScreenWidth,_searchController.searchBar.frame.size.height)];
[searchBarViewaddSubview:_searchController.searchBar];
//? ? _searchController.searchBar.frame = CGRectMake(0.0, 64.0 , ScreenWidth,44.0);
[self.viewaddSubview:searchBarView];
為什么Objective-C中不適用get前綴來表示屬性獲取方法琳袄?因為get在Objective-C中通常只用來表示從函數指針返回值的函數:
不要使用new方法,盡管很多時候能用new代替alloc init方法江场,但這可能會導致調試內存時出現不可預料的問題。Cocoa的規(guī)范就是使用alloc init方法窖逗,使用new會讓一些讀者困惑址否。
#import和#include
#import是Cocoa中常用的引用頭文件的方式,它能自動防止重復引用文件碎紊,什么時候使用#import佑附,什么時候使用#include呢?
當引用的是一個Objective-C或者Objective-C++的頭文件時仗考,使用#import
當引用的是一個C或者C++的頭文件時音同,使用#include,這時必須要保證被引用的文件提供了保護域(#define guard)秃嗜。
1.BOOL在Objective-C中被定義為signed char類型权均,這意味著一個BOOL類型的變量不僅僅可以表示YES(1)和NO(0)兩個值,所以永遠不要將BOOL類型變量直接和YES比較:
2.nil檢查
因為在Objective-C中向nil對象發(fā)送命令是不會拋出異彻牵或者導致崩潰的叽赊,只是完全的“什么都不干”,所以橡类,只在程序中使用nil來做邏輯上的檢查蛇尚。
另外芽唇,不要使用諸如nil == Object或者Object == nil的形式來判斷顾画。
3.Thread Safe 線程安全
線程安全的代碼能在多線程或并發(fā)任務中被安全的調用,而不會導致任何問題(數據損壞匆笤,崩潰研侣,等)。線程不安全的代碼在某個時刻只能在一個上下文中運行炮捧。一個線程安全代碼的例子是 NSDictionary 庶诡。你可以在同一時間在多個線程中使用它而不會有問題。另一方面咆课,NSMutableDictionary 就不是線程安全的末誓,應該保證一次只能有一個線程訪問它。