日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
iOS開發(fā)指南:與YOLOKit共度好時(shí)光

【譯文】要對(duì)Objective-C中的集合進(jìn)行列舉,過程往往既冗長(zhǎng)又笨拙。如果大家曾經(jīng)用過Ruby或者JavaScript當(dāng)中的Underscore或者Lo-Dash,肯定知道這類的任務(wù)還擁有更好的解決辦法。YOLOKit正是應(yīng)這一需求而產(chǎn)生,其創(chuàng)造者希望借助這套精致的庫(kù)為用戶排憂解難。YOLOKit的口號(hào)是“以輕松的方式搞定列舉難題”,它也的確做到了這一點(diǎn)。

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),建陽網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:建陽等地區(qū)。建陽做網(wǎng)站價(jià)格咨詢:13518219792

1、安裝

大家可以利用CocoaPods輕松將YOLOKit添加到Xcode項(xiàng)目當(dāng)中。只要將該pod加入到開發(fā)項(xiàng)目的Podfile,通過命令行運(yùn)行pod update,然后將YOLO.h導(dǎo)入到我們希望使用YOLOKit的位置即可。

如果大家不打算使用CocoaPods,也可以直接從GitHub中下載這套庫(kù),將相關(guān)文件添加到項(xiàng)目當(dāng)中然后導(dǎo)入YOLOKit標(biāo)頭。

2、使用YOLOKit

YOLOKit提供大量實(shí)用功能,但出于篇幅考慮,我們將專注于探討YOLOKit中的一部分辦法。

最小與***

讓我們先從簡(jiǎn)單的問題著手,看看如何從一個(gè)數(shù)組中提取出最小與***的數(shù)值。請(qǐng)大家閱讀以下代碼片段來理解它的運(yùn)作過程。

 
 
 
  1. NSArray *numbers = @[ @(1), @(2), @(45), @(-12), @(3.14), @(384) ]; 
  2.   
  3. // Minimum 
  4. id min = numbers.min(^(NSNumber *n) { 
  5.     return n.intValue; 
  6. }); 
  7.   
  8. id max = numbers.max(^(NSNumber *n) { 
  9.     return n.intValue; 
  10. }); 
  11.  
  12. NSLog(@"\nMIN %@\nMAX %@", min, max); 

上述代碼片段的執(zhí)行結(jié)果如下所示。

 
 
 
  1. MIN -12 
  2. MAX 384 

這部分語法看起來可能有點(diǎn)奇怪,大家也許會(huì)想為什么要將min與max構(gòu)成一個(gè)block,但事實(shí)上這種作法能帶來更多強(qiáng)大的功能。大家可以在block中添加任何內(nèi)容,從而檢測(cè)該數(shù)組中的最小與***值分別是什么。下面的示例應(yīng)該足以打消大家的疑惑。

 
 
 
  1. NSArray *words = @[ @"this", @"is", @"a", @"example", @"for", @"everyone" ]; 
  2. // Minimum 
  3. id shortest = words.min(^(NSString *n) { 
  4.     return (NSInteger)n.length; 
  5. }); 
  6.   
  7. id longest = words.max(^(NSString *n) { 
  8.     return (NSInteger)n.length; 
  9. }); 
  10.   
  11. NSLog(@"\nSHORTEST %@\nLONGEST  %@", shortest, longest); 

This code snippet results in the following output.

 
 
 
  1. SHORTEST a 
  2. LONGEST  everyone 

YOLOKit非常靈活而且不會(huì)對(duì)block參數(shù)的類型作出任何要求。不過為了照顧到編譯器的需要,我們需要將block的返回值交給NSInteger。

過濾數(shù)組

選擇&拒絕

對(duì)數(shù)組進(jìn)行過濾的方法有很多,其中包括select與reject。下面讓我們一起來看如何對(duì)之前創(chuàng)建的數(shù)組進(jìn)行數(shù)字與單詞過濾。

 
 
 
  1. NSArray *filteredNumbers = numbers.select(^(NSNumber *n) { 
  2.     return n.intValue > 10; 
  3. }); 
  4.   
  5. NSLog(@"FILTERED NUMBERS\n%@", filteredNumbers); 
  6.   
  7. NSArray *filteredWords = words.reject(^(NSString *n) { 
  8.     return n.length <= 2; 
  9. }); 
  10.   
  11. NSLog(@"FILTERED WORDS\n%@", filteredWords); 

大家必須要承認(rèn),上述代碼看起來非常出彩——可以說既簡(jiǎn)潔又清晰。在前面的例子中,數(shù)組內(nèi)容相比比較簡(jiǎn)單,但請(qǐng)注意,大家完全可以使用復(fù)雜程度遠(yuǎn)高于此的數(shù)組。下面這個(gè)例子能夠證明這一點(diǎn)。

 
 
 
  1. NSArray *people = @[ person1, person2, person3, person4, person5, person6 ]; 
  2.   
  3. NSArray *males = people.select(^(Person *p) { 
  4.     return p.sex == 0; 
  5. }); 
  6.   
  7. NSArray *females = people.reject(^(Person *p) { 
  8.     return p.sex == 0; 
  9. }); 

子數(shù)組

YOLOKit還定義了first與last,不過它們的實(shí)際作用與大家的預(yù)期并不一樣。換句話來說,它們并不等同于NSArray當(dāng)中的firstObject與lastObject方法。在first與last的幫助下,大家可以在原始數(shù)組當(dāng)中創(chuàng)建子數(shù)組,具體請(qǐng)看以下示例。

 
 
 
  1. NSArray *subsetNumbers = numbers.first(3); 
  2. NSArray *subsetWords = words.last(2); 
  3.       
  4. NSLog(@"SUBSET NUMBERS\n%@", subsetNumbers); 
  5. NSLog(@"SUBSET WORDS\n%@", subsetWords); 

上述代碼片段經(jīng)過執(zhí)行會(huì)得出以下輸出結(jié)果。

 
 
 
  1. SUBSET NUMBERS 
  2.     1, 
  3.     2, 
  4.     45 
  5. SUBSET WORDS 
  6.     for, 
  7.     everyone 

操作數(shù)組

數(shù)字排序

對(duì)數(shù)組進(jìn)行排序在YOLOKit眼中可謂小菜一碟。讓我們看看它如何對(duì)之前創(chuàng)建的數(shù)組進(jìn)行數(shù)字排序。輕松如斯:

 
 
 
  1. NSArray *sortedNumbers = numbers.sort; 
  2.       
  3. NSLog(@"%@", sortedNumbers); 

獨(dú)特內(nèi)容過濾

使用NSSet的好處之一在于它不會(huì)包含重復(fù)對(duì)象。不過對(duì)對(duì)象數(shù)組進(jìn)行獨(dú)特內(nèi)容過濾對(duì)YOLOKit同樣是輕松愉快。讓我們利用YOLOKit的concat方法添加一些額外數(shù)字,然后利用uniq對(duì)該數(shù)組進(jìn)行獨(dú)特內(nèi)容過濾。

 
 
 
  1. // Concatenate 
  2. numbers = numbers.concat(@[@1, @2, @3, @4]); 
  3.   
  4. NSLog(@"CONCAT %@", numbers); 
  5.   
  6. // Unique & Sort 
  7. numbers = numbers.uniq.sort; 
  8.   
  9. NSLog(@"UNIQ %@", numbers); 

不知道大家是否注意到了,我利用uniq與sort在進(jìn)行獨(dú)特內(nèi)容過濾的同時(shí)還完成了排序工作。我們的目標(biāo)并不是要將Objective-C代碼轉(zhuǎn)換成Ruby或者JavaScript形式,但可以肯定大家也感受到了上述代碼片段的簡(jiǎn)潔性以及閱讀方面的便利性。

逆向與改組

 
 
 
  1. // Reversing 
  2. NSArray *reversedNumbers = numbers.reverse; 
  3.       
  4. // Shuffling 
  5. NSArray *shuffledWords = words.shuffle; 
  6.       
  7. NSLog(@"REVERSED\n%@", reversedNumbers); 
  8. NSLog(@"SHUFFLED\n%@", shuffledWords); 

以上代碼片段執(zhí)行后的輸出結(jié)果如下所示。

 
 
 
  1. REVERSED 
  2.     384, 
  3.     "3.14", 
  4.     "-12", 
  5.     45, 
  6.     2, 
  7.     1 
  8. SHUFFLED 
  9.     for, 
  10.     is, 
  11.     everyone, 
  12.     example, 
  13.     a, 
  14.     this 

其它方法

能夠用于處理數(shù)組的方法還有很多,其中包括rotate、sample、without、set以及transpose等等。我建議大家點(diǎn)擊此處查看GitHub網(wǎng)站上的YOLOKit專區(qū)以了解更多細(xì)節(jié)信息。

其中一些方法還能夠與NSDictionary、NSNumber以及NSString共同使用。以下代碼片段顯示的就是我們要如何將字符串轉(zhuǎn)換成單詞數(shù)組。

 
 
 
  1. id wordsInString = @"You only live once. Right?".split(@" "); 
  2.   
  3. NSLog(@"STRING %@", wordsInString);
 
 
 
  1. STRING ( 
  2.     You, 
  3.     only, 
  4.     live, 
  5.     "once.", 
  6.     "Right?" 

3、注意事項(xiàng)

代碼完成情況

由于YOLOKit的語法比較怪異,因此Xcode對(duì)與之相關(guān)的代碼完成情況其實(shí)幫不上什么大忙。它會(huì)為我們提供一份關(guān)于YOLOKit的方法建議清單,但也就僅此而已了。如果大家打算使用YOLOKit,必須首先認(rèn)真學(xué)習(xí)其語法構(gòu)成。

性能表現(xiàn)

大家可以在GitHub提供的實(shí)例(點(diǎn)擊此處)中看到,YOLOKit并沒有針對(duì)性能表現(xiàn)進(jìn)行過優(yōu)化。不過它確實(shí)能讓我們的代碼更漂亮也更具可讀性。請(qǐng)大家務(wù)必記住,使用for循環(huán)對(duì)數(shù)組進(jìn)行循環(huán)遍歷能夠帶來比YOLOKit方法更快、更理想的性能表現(xiàn)。

總結(jié)

那么我是否推薦大家使用YOLOKit呢?既是也不是。前面提到的幾點(diǎn)負(fù)面因素不應(yīng)該成為大家拒絕使用YOLOKit的理由,不過請(qǐng)確保在使用YOLOKit之前認(rèn)真考慮到性能表現(xiàn)的重要性,特別是在有其它更好選擇的情況下——例如出色的for循環(huán)。

長(zhǎng)話短說,大家應(yīng)該在確保YOLOKit能夠?yàn)轫?xiàng)目帶來理想價(jià)值的情況下加以使用。此外,我們還需要意識(shí)到自己的選擇會(huì)迫使同事學(xué)習(xí)并適應(yīng)YOLOKit的語法習(xí)慣。我認(rèn)為YOLOKit是個(gè)了不起的項(xiàng)目,這一點(diǎn)已經(jīng)在Objective-C實(shí)際效果中表現(xiàn)得***。就我個(gè)人而言,這也是我從YOLOKit身上學(xué)到的最寶貴的財(cái)富。

原文鏈接:

http://code.tutsplus.com/tutorials/having-fun-with-yolokit--cms-21277

原文標(biāo)題:Having Fun with YOLOKit

核子可樂譯


當(dāng)前名稱:iOS開發(fā)指南:與YOLOKit共度好時(shí)光
當(dāng)前地址:http://m.5511xx.com/article/dhocpeg.html