成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS學習筆記總結整理

移動開發 iOS
不積跬步無以成千里,學習在于點點滴滴的積累,下面為大家整合了一些iOS學習筆記總結整理,希望為各位還在努力學習的師弟師妹謀一些福利。

學習IOS開發這對于一個初學者來說,是一件非常撓頭的事情。其實學習IOS開發無外乎平時的積累與總結。下面為大家整理了一部分的iOS學習筆記總結整理,希望對大家有所幫助。

一.內存管理情況

  1. NSString *homePath = NSHomeDirectory(); 
  2. NSString *docPath = [homePath stringByAppendingFormat:@"/Documents"]; 
五.UIActionSheet 按鈕列表
六.旋轉
    1- interfaceOrientation屬性查詢當前的界面方向。
    2- rotatingHeaderView方法來查詢當前導航視圖。
    3- rotatingFooterView來查詢當前的標簽條。
七.快速撥打電話接口
openURL能幫助你運行Maps,SMS,Browser,Phone甚至其他的應用程序。這是Iphone開發中我經常需要用到的一段代碼,它僅僅只有一行而已。
  1. [UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://8004664411"]; 
這個程序通過基礎的協議支持撥打電話的功能。
摘自:http://blog.csdn.net/smilelance/article/details/6213125
八.區分設備類型的方法
打電話功能只有iPhone支持,對于其他設備對應按鈕應該禁用。
1. 用[UIDevice currentDevice].model,這個返回的是一個NSString,你可以做如下判斷就能知道設備是iPad還是iPhone.
  1. if ([UIDevice currentDevice].model rangeOfString:@"iPad"].location != NSNotFound) { 
  2.     NSLog(@"This is an iPad!"); 
2. 用UI_USER_INTERFACE_IDIOM()方法,這是系統定義的一條宏。使用方法也很簡單。
  1. if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
  2.     NSLog(@"This is an iPad!"); 
摘自:http://blog.sina.com.cn/s/blog_3f88614f0100sdcm.html

九.并發編程
    1-GCD-Grand Central Dispatch,GCD使用隊列來管理多個任務,而每個任務是以塊(其定義類似于函數)來描述的。GCD從隊列中讀取這些要完成的任務,然后其多核執行 引擎負責將這些任務分配給它所管理的線程。和手動線程管理相比,GCD能極大地優化線程管理,并極大地減少創建和銷毀線程所帶來的額外開銷。除了在多核系 統上得性能改進之外,GCD還能幫助提高應用的響應速度,并讓代碼更為干凈,易于維護。
    2-NSOperationQueue-操作隊列,可以極大地減少開發者在并發編程中的負擔,并且操作隊列有一套Objective-C的API,使用起來方便。
    基本操作單位-NSOperation,操作。
    操作是封裝了一個與任務有關的代碼與數據的抽象類,需要繼承NSOperation,并且描述相關的任務。操作對象是一次性的,它只能執行一次,下一次,需要創建一個新的實例。
    可以通過addDependency:方法為操作添加相互依賴性。假設操作A依賴于操作B,如果操作B沒有結束,操作A就不會開始執行。完成是指 執行完,或者取消了操作。有時需要對操作是否成功作出判斷。通過removeDependency:方法來移除操作的相互依賴性。
    操作的一個屬性是isConcurrent。當使用操作隊列來管理這些操作時,isConcurrent應當設置為NO,這時應當重載 NSOperation的main函數(在類中保存controller對象-weak,并在main中調用controller的方法)。 isReady屬性用于描述操作是否已經可以開始執行,isExecuting屬性表示操作是否正在執行當中,isFinished屬性表示操作是否順利 完成,isCancelled屬性則表示操作已經取消。
    可以在操作運行中取消它的運行,只需要給它發送cancel消息即可。在繼承NSOperation類時,也需要支持cancel方法。
    如果只需要簡單的操作,不想繼承NSOperation類,可以使用NSInvocationOperation類,這個類中的-initWithTarget:selector:object:方法能幫助你方便地選擇人物的對象和相應的功能。
    操作的執行順序取決于各自的優先級和相互之間的依賴性。
    操作隊列有兩種方式來執行其中的操作。第一種是開辟新線程來運行這些操作,第二種則是通過GCD來運行這些操作。但是無論如何,都不需要手動管理 線程。盡量使用操作隊列,只有在操作隊列的效率明顯不足時才轉向GCD。因為操作隊列是封裝在GCD的基礎之上的,雖然增加了一些額外開銷,但是也具有更 加完善的功能。例子是TestNSOperation。
                           下頁內容更加精彩實用
#p#
十.忙碌指示器
    UIActivityIndicator。
  1. UIActivityIndicatorView *activityIndicatior = [UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhiteLarge]; 
  2.     activityIndicator.center = CGPointMake(512, 384); 
  3.     [self.view addSubview: activityIndicator]; 
  4.     [activityIndicator startAnimating];  
  5.     [activityIndicator stopAnimating]; 
  6.     [activityIndicator removeFromSuperView]; 
十一.媒體播放

1- 音頻
    [1] 音樂往往是存儲在iPod曲庫(注意位置)中的,可以通過媒體選擇器(media picker)或者媒體查詢(media query)讀取,然后用音樂播放器MPMusicPlayerController播放。
  1. MPMusicPlayerController *musicPlayer = [MPMusicPlayerController applicationMusicPlayer]; 
  2. [musicPlayer setShufleMode: MPMusicShuffleModeSongs]; 
  3. [musicPlayer setRepeatMode: MPMusicRepeatModeAll]; 
  4. [musicPlayer setQueueWithQuery: [MPMediaQuery songsQuery]; 
  5. [musicPlayer play]; 
    applicationMusicPlayer返回的播放器,在你的應用中播放音樂。它不會影響到iPod播放器,也不能從iPod播放器重獲取信息。
    iPodMusicPlayer返回的是iPod播放器,在你推出應用后,所有的設置都會影響到之后設備上的iPod播放器。
    獲得音樂播放器后,需要為它設置一個播放隊列。可以用setQueueWithQuery:放方法,通過媒體查詢MPMediaQuery來設置 播放隊列,也可以用setQueueWithItemCollection:方法,通過MPMdiaItemCollection來設置播放隊列。
    重復模式repeatMode可以設置為不重復、重復當前曲目、或整個播放列表;亂序播放shuffleMode可以設置為不亂序、亂序播放曲目或亂序播放專輯;音量volume的設置與音頻播放器一樣。
    skipToNextItem跳到下一首,skipToPreviousItem跳到上一首,skipToBegin跳到第一首。
    對應的宏都是以MPMusic開頭。
    [2] 利用系統聲音服務來播放短暫音效(時長30秒以內),并震動:   
  1. AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);  
    播放指定音效:
  1. NSURL *fileURL = [NSURL fileURLWithPath: path isDirectory: NO];  
  2. // 創建音效ID 
  3. SystemSoundID soundID; 
  4. AudioServiceCreateSystemSoundID((CFURLRef) fileURL, &soundID); 
  5. // 播放聲音 
  6. AudioServicesPlaySystemSound(soundID); 
    [3] 音頻播放器
    沒有時長限制
  1. NSURL *fileURL = [NSURL fileURLWithPath: path isDirectory: NO]; 
  2. // 用URL來初始化音頻播放器-播放的不是iPod曲庫中的音樂 
  3. AVAudioPlayer* player = [AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: NO]; 
  4. // 準備播放 
  5. [player prepareToPlay]; 
  6. // 設置代理 
  7. [player setDelegate: self]; 
    方法:play、pause、stop。可以通過playing屬性查詢播放器是否正在播放當中,可以通過volume屬性來修改和查詢播放器的播放增益(從0.0到1.0),可通過setting屬性查詢播放器其他設置。

    duration表示音頻的時間長度, currentTime表示當前播放到的時間。播放結束后可以通過代理方法audioPlayerDidFinishPlaying:來處理播放后設置。
2- 視頻
    視頻播放可以采用網頁視圖(UIWebView)進行嵌入式播放(能播放YouTube視頻),或者采用電影播放器(MPMoviePlayerController)進行播放。
    [1] 電影播放器
  1. MPMoviePlayerController *player = [MPMoviePlayerController alloc]initWithContentURL: url]; 
  2.     // 設置播放器的大小,并將其加入視圖中 
  3.     [player.view setFrame: rectFrame]; 
  4.     [self.view addSubView: player.view]; 
  5.     播放器的背景視圖backgroundView。 
  6.     全屏[player setFullscreen: YES animated: YES]; 
  7.     播放另一個影片[player setContentURL: newURL]; 
  8.     [player requestThumbnailImagesAtTimes:arrayTimes timeOption:MPMovieTimeOptionNearestKeyFrame]; // 表示播放器不會在你所指定的時間去截取預覽,而是在絕對時間的附近幾幀中尋找效果最好的幀做為預覽。 

scalingMode規定了影片的縮放模式。   

initialPlaybackTime用來控制視頻開始播放的時間,單位是秒。

如果視頻源在網絡上,那么需要正確設置服務器端的mimeType。
十二.運行環-runloop
    運行環作用于一個iOS應用的整個生命周期。它負責監視各種輸入事件,并且在合適的時候對這些輸入進行分配。應用的每一個線程都有且僅有一個運行環。你自己不需要創建也不需要銷毀運行環,但是可以通過currentRunLoop方法來獲取當前的運行環。

十三.定時器
    由于運行環機制,定時器的精度不高,只能用于一般性延時。
    例子:拼圖游戲,DeskViewController.m。
    NSObject類的定時方法。
    performSelector: withObject: afterDelay: 運行方法,參數,時間(秒)。
    performSelectorOnMainThread: withObject: waitUntilDone: 在主線程中,運行參數selector所指定的方法,如果waitUntilDone參數為YES,那么當前線程會被阻攔,直到selector運行完。
    performSelector: onThread: withObject: waitUntilDone:同上,但不一定在主線程中運行。
    performSelectorInBackground: withObject: 開啟一個新線程,用于運行selector方法,selector方法應負責線程的初始化。
    cancelPreviousPerformRequestsWithTarget:取消與一個目標相關的所有計劃好的動作。
    cancelPreviousPerformRequestsWithTraget: selector: object只取消特定的計劃動作。
十四.隨機數
0~1之間隨機數
  1. CG_INLINE float genRandomNum() 
  2.     return (float)arc4random/ARCRANDOM_MAX; 
十五.加速度傳感器
    獲得加速度傳感器讀數:
  1. UIAccelerometer *accelerometer = [UIAccelerometer shareAccelerometer]; // 單例 
  2. accelerometer.delegate = self; 
  3. accelerometer.updateInterval = 1.0f / 10.0f; // 傳感器更新頻率,普通游戲10~30HZ,虛擬現實類游戲,30~60HZ 
  4. accelerometer.x, accelerometer.y, accelerometer.z // 傳感器讀數 
    若不想再接受傳感器讀數,可將代理設置為nil
  1. [UIAccelerometer shareAccelerometer].delegate = nil;  
  2.  
  3. #define alpha 0.05 
  4. // 獲得重力引起的加速度讀數: 
  5. - (void)accelerometer: (UIAccelerometer *)accelerometer didAccelerate: (UIAcceleration *)acceleration 
  6.     // 簡單低通濾波器 
  7.     accelX = (acceleration.x * alpha) + (accelX) * (1.0 - alpha); 
  8.     accelY = (acceleration.y * alpha) + (accelY) * (1.0 - alpha); 
  9.     accelZ = (acceleration.z * alpha) + (accelZ) * (1.0 - alpha); 
  10.      
  11. // 獲得動作引起的加速度讀數: 
  12. - (void)accelerometer: (UIAccelerometer *)accelerometer didAccelerate: (UIAcceleration *)acceleration 
  13.     // 減去低通濾波輸出,得到高通濾波輸出 
  14.     accelX = acceleration.x - ((acceleration.x * alpha) + (accelX) * (1.0 - alpha)); 
  15.     accelY = acceleration.y - ((acceleration.y * alpha) + (accelY) * (1.0 - alpha)); 
  16.     accelZ = acceleration.z - ((acceleration.z * alpha) + (accelZ) * (1.0 - alpha)); 
十六.地圖與連接服務器
[1] 添加框架MapKit.framework。使用MKMapView來呈現地圖。注意應當直接使用此類,而不是繼承之。如果希望在MKMapView類之上添加功能,可以使用MKMapViewDelegate協議。
    初始化:
  1. MKMapView *mapView = [MKMapView alloc] initWithFrame: rect]; 
    初始化之后并不直接顯示,還需要指定顯示的地圖區域:
  1. CLLocationCoordinate2D coordinate; 
  2. coordinate.latitude = latitudeValue; // 緯度 
  3. coordinate.longtitude = longtitudeValue; // 精度 
  4. mapView.region = MKCoordinateRegionMakeWithDistance(coordinate, width, height); // 指定顯示區域,width和height單位都是米 
    之后可以通過addSubview添加地圖。
    屬性:showsUserLocation-為YES,系統會持續跟蹤用戶的位置
          userLocationVisible-為YES,將顯示用戶所在位置
    顯示地圖之后,常常希望在地圖上添加標注,這需要創建一個類,并實現MKAnnotation協議,這個類叫做標注對象。標注對象往往實現 setCoordinate:方法來設置其坐標。在地圖視圖上,可以設置標注對象的坐標,然后添加進去,這樣地圖上就會出現一個標注。代理方法title 和subtitle能夠在標注上顯示標題和副標題。  
  1. // 初始化 
  2.    mapView = [MKMapView alloc] initWithFrame: CGRectMake(100, 100, 550, 700)]; 
  3.    mapView.showsUserLocation = TRUE; 
  4.    mapView.mapType = MKMapTypeStandard; 
  5.    mapView.delegate = self; 
  6.    // 設置坐標 
  7.    CLLocationCoordinate2D coordinate; 
  8.    coordinate.latitude = 37.31; 
  9.    coordinate.longtitude = -122.03; 
  10.    mapView.region = MKCoordinateRegionMakeWithDistance(coordinate, 4000, 6000); // 4000米寬,6000米高的區域 
  11.    [self.view insertSubview: mapView atIndex: 0]; 
十七.通過storyboard來初始化一個controller
  1. CBigDesignImageViewController *imageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"BigImageController"];  
   BigImageController是要在storyboard中設置的Identifier屬性。

十八.給UIView子類設置陰影,包括各種控件
    1 導入QuartzCore framework
    2 #import <QuartzCore/QuartzCore.h>
    3 編碼:
  1. [imgView layer] setShadowOffset:CGSizeMake(5, 5)]; // 陰影的范圍  
  2. [imgView layer] setShadowRadius:2]; // 陰影擴散的范圍控制  
  3. [imgView layer] setShadowOpacity:1]; // 陰影透明度  
  4. [imgView layer] setShadowColor:[UIColor brownColor].CGColor]; // 陰影的顏色 
十九.設置UIScrollView滾動速度      
  1. // 自動滾動太快,效果不好,這里把動畫設置慢點,注意下面要直接賦值contentOffset,不要用帶animated參數的函數,否則動畫會出問題,因為兩處都是動畫效果。 
  2.         [UIScrollView animateWithDuration:1.0f  
  3.                                delay:0  
  4.                                options:UIViewAnimationCurveLinear 
  5.                                animations:^{ 
  6.                                    scrollView.contentOffset = CGPointMake(0, 0);  
  7.                                } 
  8.                                completion:^(BOOL finished){} 
  9.                                ];  
  10.         // 如果在減速滾動過程中,按了刷新按鈕,執行上面的動畫,會出現重置的位置,y不是0的情況,這里再調用一次,滾動到0。 
  11.         [scrollView setContentOffset:CGPointMake(0, 0) animated:YES];  
二十.EXC_BAD_ACCESS
Here’s the advice I generally give to developers when you hit an EXC_BAD_ACCESS error:
-Set the NSZombieEnabled argument in your executable options, which sometimes helps narrow down the cause
-Run with Apple Instruments such as Leaks to look for memory issues
-Set a breakpoint in your code and step through until you narrow down where it’s crashing
Tried and true “comment out code till it works” then backtrack from there :]

Xcode4 下設置 NSZombieEnabled 的方法: 
你可以點擊 Xcode4 菜單 Product -> Edit Scheme -> Arguments, 然后將點擊”加號”, 將 NSZombieEnabled 參數加到 Environment Variables 窗口中, 后面的數值寫上 ”YES”.
或者在 Xcode4 菜單 Product -> Edit Scheme -> Diagnostics 設置窗口中直接勾上 Enable Zombie Objects 即可,Xcode 可用 cmd+shift+< 進到這個窗口。 
Xcode4 已經考慮到了現在的要求,所以提供了更便捷的設置的方式,你也可以在這個窗口中設置其他一些參數,你肯定能由此獲得更多的幫助信息。
 
好了,看完這篇iOS學習筆記整理,不知道對你是不是有所啟發。
責任編輯:閆佳明 來源: csdn
相關推薦

2009-06-17 14:21:39

core java

2009-08-13 18:21:52

C#學習筆記

2010-06-30 18:09:22

UML建模

2010-06-13 13:44:07

UML學習筆記

2010-01-14 17:02:10

學習C++

2012-05-14 16:59:40

iOS

2015-01-12 09:40:41

iOS學習資料整理

2015-01-12 12:12:00

iOS學習資料整理

2009-09-08 16:11:20

CCNA(640-80

2010-07-09 14:05:56

UML建模

2010-01-26 17:53:05

C++入門學習

2009-12-17 16:15:00

CCNP學習筆記

2009-07-14 17:01:24

JDBC基礎

2011-07-08 18:28:43

iOS 接口

2010-06-02 09:06:26

SVN學習

2010-06-17 16:42:04

UML

2011-08-22 15:43:08

IOS開發數據庫

2012-10-09 10:26:52

Linux目錄權限

2010-02-05 14:48:04

Android手機操作

2011-07-22 16:57:44

iOS 通知
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 毛片一区二区三区 | 午夜精品 | 色999视频| 蜜月va乱码一区二区三区 | 亚洲精品久久久一区二区三区 | 国产视频第一页 | 黄色在线播放视频 | 一区二区日韩 | 久久综合狠狠综合久久综合88 | 日韩三区在线观看 | 久久国产区 | 中文字幕亚洲无线 | 日韩精品一二三 | 国产高清视频在线 | 精品少妇一区二区三区日产乱码 | 精品一区二区三区在线视频 | 国产精品成人国产乱一区 | 福利视频一二区 | 天天夜夜人人 | 91亚洲国产 | 在线黄色影院 | 中文字幕一区二区三区四区五区 | 国产精品99久久久久久动医院 | 91国产视频在线观看 | 一区网站| 日韩视频一级 | 超碰av免费 | 久久精品99国产精品 | 亚洲欧美视频 | 国产在线精品一区二区三区 | 成人免费观看男女羞羞视频 | www成人啪啪18 | 久久久久久久久91 | 成人福利视频 | 久久久久亚洲精品国产 | 在线看av的网址 | 国产高清精品一区 | 久操av在线 | h片免费在线观看 | 91香蕉视频在线观看 | 欧美 日韩 国产 成人 |