1.URL中文問題:html
URL不支持中文。若出現中文,須要對URL進行utf-8編碼。git
NSString *urlString = [kULRSTRING stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];web
2.把UIImage轉換成二進制數據NSData:spring
第一行:把png圖片轉換爲二進制數據; 第二行:把jpeg圖片轉換爲二進制數據sql
3.NSString和NSData的互相轉換: 數據庫
4.一次性設置全部導航條的背景圖片:編程
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationbar"] forBarMetrics:UIBarMetricsDefault];數組
5.一次性關閉全部導航條的半透明:xcode
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];安全
等效於被註釋掉的部分:
OC只容許單繼承,多接口。
經過繼承能夠得到其餘類的屬性和方法;經過實現接口能夠得到其餘類的方法。
既然OC是單繼承的,那我怎麼得到多個父類的屬性??
——————————————————————————————————————————
JSON文檔中的數據類型:
「123」 ——>NSString
123 ——>NSNumber
null ——>NSNull
——————————————————————————————————————————
nil和NULL的區別:
——————————————————————————————————————————
用xib建立視圖,走的是awakeWithNib構造函數;用代碼建立的視圖,走的是init構造函數。
——————————————————————————————————————————
怎麼得到手機的系統版本?
float version = [[[UIDevice currentDevice] systemVersion] floatValue];
——————————————————————————————————————————
聊天氣泡的拉伸:
倆參數爲設置圖片的像素位置,使圖片在該點拉伸,而不會總體拉伸。
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight;
——————————————————————————————————————————
去掉cel的分割線:
tabView.separatorStyle = UITableViewCellSeparatorStyleNone;
——————————————————————————————————————————
使cell無點擊選中效果:
self.selectionStyle = UITableViewCellSelectionStyleNone;
——————————————————————————————————————————
iOS觀察者模式,及應用(通知中心,KVO,Delegate): http://blog.csdn.net/xdrt81y/article/details/24039163
當咱們對某對象的屬性改變敏感時,能夠給它註冊觀察者,當該對象的屬性值發生變化時,會通知咱們,會自動調用回調函數。
1.給某對象註冊觀察者,觀察它的某屬性;
——————————————————————————————————————————
根據文本內容,自動計算其尺寸:
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context
——————————————————————————————————————————
在block外建立的對象,不能在block裏直接使用,由於block和主程序執行是異步的,block執行時該對象已被銷燬。因此說,,,__block 關鍵字的本質是拷貝了一份原來對象麼???
————————————————————————————————————————————
————————————————————————————————————————————
iPad開發與適配:
分割視圖,須要同時存在兩個viewController. 和tabbarViewController很類似,至關於一個容器,裏面能夠裝VC和navC
webView,也是繼承自scrollView。只要能滾動的視圖都繼承自scrollView,
—————————————————————————————————————————
根據字符串str,求以它爲前綴的字符串。
—————————————————————————————————————————
常見容器視圖:
UITabBarController, UINavigationController(導航控制器), UISplitViewController (分割視圖,ipad)
—————————————————————————————————————————
iOS的國際化:http://www.cnblogs.com/qingjoin/p/3899265.html
—————————————————————————————————————————
storyboard,它和xib的區別:
在一個storyboard裏能夠佈局多個界面視圖,而且能清晰的體現他們之間的關係結構,並且storyboard能完成界面跳轉。
界面跳轉:segue
push,modal,custom三種跳轉方式的區別?
—————————————————————————————————————————
代碼版本管理工具:svn 和 git
svn:
第一次取代碼:checkout;
更新代碼:updata;
提交代碼:commit。
寫完本身的代碼,先updata再commit。
http://www.cnblogs.com/ludashi/p/4018245.html
—————————————————————————————————————————
解決鍵盤遮擋輸入框的幾種方案:
1.當textfield被點擊後彈出鍵盤,而且使整個view上移鍵盤的高度。當endediting,隱藏鍵盤的同時再調低view的高度。
2.利用UIKeyboardDidShowNotification
—————————————————————————————————————————
學生代碼管理 http://10.2.100.8/stuproj/1502/[名字拼音]_PocketKitchen.git
—————————————————————————————————————————
id和instancetype的區別:
id是任意類型,類型提高;
instancetype是指生成當前類的類型,是哪一個類,就是哪一個類型。(如果YWViewController,爲何不寫明是YWViewController呢?答案是複製方便。寫instancetype是動態實時的獲取類型的)
—————————————————————————————————————————
iOS定製控件:
http://www.cocoachina.com/industry/20131104/7287.html?utm_source=tuicool
http://blog.csdn.net/zhanghanming199038/article/details/8755680
—————————————————————————————————————————
模態視圖控制器:
—————————————————————————————————————————
之前在作界面中的一條線的方法是經過調整UILabel的寬高來實現的。但更高級的方法是用用繪圖API完成。
—————————————————————————————————————————
iOS響應者鏈
—————————————————————————————————————————
不少時候咱們要把從網絡解析來的dict裝入model,這時咱們能夠利用KVC的setValuesForKeysWithDictionary:方法來一次性的賦值,很方便,但它的弊端是不太安全,若寫錯key,則key和model裏的屬性對應不上,就會報錯。這時咱們應該重寫兩個方法。
—————————————————————————————————————————
viewDidLoad方法裏通常寫:1.初始化一些數據(數組,字典等);2.UI佈局;3.加載數據(網絡請求或者本地加載)
重寫原來的解析器方法,以自定義一個更適合本身的JSON解析器。
AFHTTP,請求網絡方法幾個步驟,封裝成一個方法。是請求網絡只需調用這一個方法便可。
網絡請求方法GET的返回類型是AFHTTPRequestOperation,可是咱們在調用這個GET方法的時候沒有使用變量去接收這個返回值。其實這個方法的返回值的主要用於屢次中斷下載,當你的APP能夠一次性下載完時,就不須要它了。如果中間請求網絡,下載數據的時候被中斷了,下次下載的時候會從這個返回值裏取得一些信息。
—————————————————————————————————————————
從服務器得到的日期格式是yyyy-mm-dd形式的。怎麼單獨得到day呢?
我首先想到的是經過索引發始位置求子串,但這種方法不太可行,若月份天數有可能有時是一位數,有時是兩位數的。
而後想到的是字符串的分割方法 NSArray * array = [str componentsSeparatedByString:@"-"];經過-來分割字符串。
—————————————————————————————————————————
imageView裏的contentMode = UIViewContentModeScaleAsPectFill
—————————————————————————————————————————
CoreData:映射。數據庫表和model屬性的映射。
FMDB不支持多線程,因此FMDB官方建議使用DatabaseQuene
MFDB批量更新數據庫:http://blog.csdn.net/x32sky/article/details/18965155
—————————————————————————————————————————
在寫單例方法時,加鎖能夠用@sy... 那種方法,但如今比較流行gcd多線程加鎖的方式。
static dispatch_once_t token;
dispatch_once(&token, ^{
_appSupport = [[QFAppSupport alloc] init];
});
—————————————————————————————————————————
iOS 編程實戰 最新版 (下載pdf)
—————————————————————————————————————————
present,dismiss和push,pop的區別;
前二者適用於全部的界面,然後二者是導航控制器中的內容,只有該界面是裝入導航控制器的,才能用push和pop,它跳轉的界面之間是層結構(棧結構);而前二者是跳轉的界面是平行的。
—————————————————————————————————————————
cookMenuVC.title = @"菜譜";這樣寫在tabBar和navBar中都會有title;
cookMenuNavC.tabBarItem.title = @"ca"; 這樣寫只在tabBar中又title
—————————————————————————————————————————
原子性,非原子性。
—————————————————————————————————————————
iOS7之後默認都有返回滑動手勢,在屏幕左邊緣向右滑動,就會返回上一層頁面(至關於pop)。可是若是自定義了navgationBar的Back按鈕,則就關閉了該返回手勢,因此,此時咱們得手動開啓它。
—————————————————————————————————————————
iOS裏實現回調的方式:
1.代理
2.block
—————————————————————————————————————————
GCD:
dispatch_async( ) 異步:函數會當即返回,block會異步執行,不阻塞
dispatch_sync( ) 同步:函數會等待執行完畢後再返回,阻塞
GCD中三種隊列:主隊列,全局隊列,自建立隊列
串行隊列,併發隊列
http://blog.csdn.net/springpp1990/article/details/12451913
http://www.cnblogs.com/sell/archive/2013/02/06/2905693.html
—————————————————————————————————————————
APP上線後,常常會升級更新,並且數據庫中的表可能會發現變化,因此要作數據庫版本的控制。
APP的圖標,和啓動頁
修改APP的名字
——————————————————————————————————————————
Core Animation
CALayer
錨點
給CollectionView添加Header
http://my.oschina.net/zboy/blog/221525
開發證書,推送證書,配置文件。
真機測試
——————————————————————————————————————————
——————————————————————————————————————————
iOS 支付寶開發步驟:
1.去官網註冊合約帳號,註冊後會有
——————————————————————————————————————————
這兩行代碼都是在iOS7下修改navigationBar的背景顏色的。
self.navigationController.navigationBar.backgroundColor = [UIColor greenColor];
self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];
——————————————————————————————————————————
設置navigationBar的文字顏色,文字字體,文字陰影等
self.navigationController.navigationBar.titleTextAttributes = @{UITextAttributeTextColor:[UIColor whiteColor]};(會報異常)
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor]};(不會報異常)
更多設置:http://www.41443.com/HTML/iphone/20141221/253422.html
導航條的半透明開關閉究竟是哪一個?? self.extendedLayoutIncludesOpaqueBars = YES;
——————————————————————————————————————————
用代碼實現AutoLayout
VFL語言
可是這些都很繁瑣,實際開發中咱們通常使用自動佈局的第三方庫Masonry,用Masonry設置約束
第三方庫管理插件
——————————————————————————————————————————
第三方登陸:QQ登陸
http://blog.sina.com.cn/s/blog_92ac2c5b0101cly9.html
——————————————————————————————————————————
http://blog.csdn.net/totogo2010/article/details/7645693
——————————————————————————————————————————
當自定義的視圖不是控制器時,它使沒有initWithNibName這個構造方法的,要想初始化xib文件,可使用
NSArray * arr = [[NSBundle mainBundle] loadNibNamed:@"" owner:self options:nil];
——————————————————————————————————————————
[NSString stringWithUTF8String:object_getClassName(self)] 這行能夠判斷當前類,因此在base中判斷當前類就好了,
——————————————————————————————————————————
把返回結果的處理封裝在block裏,(把block用typed定義成類型,而後用block做返回處理)。
——————————————————————————————————————————
pch文件,(precompiled header)預編譯頭文件(放置重複import,重複編譯)
xcode6以後,建立項目後不會自動幫咱們建立.pch文件了,當咱們須要時,要咱們本身手動建立。
——————————————————————————————————————————
把解析的dict給model賦值,簡便方法是使用KVC,model對象調用setValuesForKeysWithDictionary:
使用KVC須要注意的地方:
1.字段要對應,若字段不對應會奔潰。須要重寫forUndefinedKey:方法,若,則不須要爲他賦值
——————————————————————————————————————————
回調函數通常有兩種方式實現:代理模式和block
對block進行內存管理,要使用copy。
——————————————————————————————————————————
initWithNibName等幾個函數的區別:
http://www.cnblogs.com/geraldzhang/archive/2011/09/21/2183970.html
——————————————————————————————————————————
runloop:
——————————————————————————————————————————
block的生命週期和內存管理
http://www.tanhao.me/pieces/310.html/
http://www.cnblogs.com/tangbinblog/archive/2012/12/31/2840690.html
初始化時是在棧上,進行copy操做是爲了把block從棧上拷貝到堆上使用
可使用typedef定義一個block類型,便於後續使用,不過通常狀況下咱們不用這樣,就像系統SDK同樣,int (^)(int x, int y) myblock
在block有時會陷入強引用循環的僵局,形成對象沒法被釋放的僵局。
typedef int(^Myblock) (int, int);
Myblock mb = ^(int x, int y){
};
——————————————————————————————————————————
1.若不是iOS7以上的應用則不經過上線;
2.若不適配iphone6以上,則不經過上線;
3.若應用不支持arm64設備架構,則不經過上線
——————————————————————————————————————————
任務:
換頭像(圖片選取器);
第三方登陸:QQ
第三方分享:在專題詳情界面添加分享功能ShareSdk
第三方支付:
autolayout 以及Masonry;
定位與第三方地圖接口;(LBS)
遠程推送的原理 (APNs)
即時通信(XMPP)
蘋果有關的全部證書。
第三方類庫管理cocopods http://blog.csdn.net/meegomeego/article/details/24005567
多線程,runloop
反射機制
NSArray和NSMutableArray在內存中的不一樣 :
前者在內存中的數據結構是List,它是連續的,分配的內存是固定的;
後者在內存中的數據結構是鏈表,它是不連續的。
isMemberOfClass
視圖響應鏈
事件傳遞機制
drawRect方法
iOS數據庫,sqlite和CoreData
第一響應者
應用上線的操做流程
代碼版本控制:svn和git
觸摸事件的傳遞:由父視圖傳向子視圖(由下而上)。若父控件不能接收觸摸事件,則子控件就不可能接收到觸摸事件。
友盟的社會化分享,第三方登陸,第三方推送
環信(第三方即時通信)