QF——網絡之知識碎片

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

 

 

 

  觸摸事件的傳遞:由父視圖傳向子視圖(由下而上)。若父控件不能接收觸摸事件,則子控件就不可能接收到觸摸事件。

 

 

  友盟的社會化分享,第三方登陸,第三方推送 

  環信(第三方即時通信)

相關文章
相關標籤/搜索