① ios中怎樣合起所有代碼快捷鍵
在做iOS開發的過程中,你會發現有些代碼在項目中需要反復使用,在XCode裡面我們可以通過Code Snippet將常用的代碼創建成代碼片段,並定義好快捷方式,我們在需要輸入這塊代碼的時候,只需要輸入幾個字母,就能迅速生成這塊常用的代碼,這樣會大大提高我們的編程效率。
XCode裡面默認定義了一些比較常用的代碼片段,比如我們想要寫一個for in的循環,我們只需要輸入forin這幾個字母,然後按下回車鍵,XCode裡面就會自動生成一個for in的代碼塊。
那麼XCode裡面的Code Snippet是在哪定義呢,在XCode右側的導航欄下面,切換到第二個Tab,可以看到XCode自帶的默認的Code
Snippet。
那麼我們怎麼定義自己的代碼片段呢,操作很簡單。首先選中將要定義的代碼片段,然後將其拖放到右側的Code
Snippet中。
可
以看到Code
Snippet自動為我們生成了一個My Code
Snippet的代碼片段,點擊Edit按鈕,我們可以設置一下這個代碼片段的一些屬性。主要有兩個屬性需要我們設置一下,修改Title的默認描述,定
義Completion
Shortcut快捷輸入方式,這裡面我創建的是一個Lable,我簡單設置為cl,點擊Done按鈕,就完了這個代碼片段的定義了。
現在在Xcode的代碼編輯器中只需要輸入快捷方式(cl),就能將上面的代碼快添加到代碼中去了。
上面定義的代碼塊,字體大小和顏色都是設置成固定的,但是在實際的使用過程中,我們一般都要去修改這個Label的字體大小和顏色,我們可以將這兩個值設置為佔位符,這樣我們在修改的時候可以使用Tab鍵,快速定位到要修改的地方了。在Code
Snippet裡面可以將要動態變化的參數放在<# #>之間,比如我們上面定義的代碼塊可以修改成下面這樣:
[objc] view plain
UILabel *label = [UILabel new];
label.font = [UIFont systemFontOfSize:<#fontSize#>];
label.textColor = [UIColor <#textColor#>];
label.backgroundColor = [UIColor clearColor];
[self addSubview:label];
現在我們在代碼編輯裡面輸入cl再試一下,發現設置字體大小和顏色的地方,已經變成佔位符了,我們可以通過Tab鍵切換去修改對應的值了,這感覺比在Xib裡面去設置控制項的屬性更方便,有木有~
上面創建的控制項的名字都叫lable,在實際的開發過程中,我們肯定需要去修改這個控制項的名字,但是在上面定義的代碼塊裡面,我並沒有將控制項的名字通過<#
#>定義為佔位符,是因為XCode裡面提供了一種修改同一個變數名的快捷方式,選中變數名,然後同時按下control+command+E,就可一次將變數的名字修改好了,如果用佔位符的話,還得一個個去填寫變數的名字。
Code
Snippet特別對於用代碼布局UI的時候,很有幫助,由於代碼布局需要自己手動一個個去創建控制項,如果一個個去寫很費時間,通過Code Snippet將創建控制項的代碼封裝成代碼塊,在需要使用的地方,直接使用快捷鍵就能生成創建控制項的代碼了。
② ios開發 怎麼設置for in 循環索引
for循環的話主要分為兩種,一種是你說的三個條件的,用索引來遍歷對象(List,數組,Dictionary等等);另一種就是圖上這種for(var i in Object),這種就是直接遍歷Object下的子元素集合了,范圍自然默認為集合的容量了,也就不需要其他條件了
③ ios for in遍歷是有序的嗎
for in實際上是快速枚舉,跟for循環意義上還是有區別的。
你可以翻翻書,看看枚舉。
NSArray的枚舉操作中有一條需要注意:對於可變數組進行枚舉操作時,你不能通過添加或刪除對象這類操作來改變數組容器。如果你這么做了,枚舉器會很困惑,而你將得到未定義的結果。
而本身這種操作也是有問題的,數組容器已經改變,可能遍歷到沒有分配的位置,用for循環機器不能自己察覺,但是枚舉器可以察覺。
追加,這個錯誤(<__NSArrayM: 0xa4fc000> was mutated while being enumerated.)的意思是:枚舉的過程中數組發生了突變
④ iOS中遍歷數組的方法
1.使用普通的for循環
NSArray *ary = @[@"我",@"是",@"張",@"小",@"倍",@"er"];
for (int i = 0; i < ary.count; i ++) {
NSLog(@"%@",[ary objectAtIndex:i]);
}
2.使用for in 進行遍歷
NSArray *ary = @[@"我",@"是",@"張",@"小",@"倍",@"er"];
for (NSString *str in ary) {
NSLog(@"%@",str);
}
3.使用do while
NSArray *ary = @[@"我",@"是",@"張",@"小",@"倍",@"er"];
int i = 0;
do {
NSLog(@"%@",[ary objectAtIndex:i]);
i ++;
} while (i < ary.count);
}
4.使用while do
NSArray *ary = @[@"我",@"是",@"張",@"小",@"倍",@"er"];
int i = 0;
while (i < ary.count) {
NSLog(@"%@",[ary objectAtIndex:i]);
i ++;
}
5.使用快速枚舉
NSArray *ary = @[@"我",@"是",@"張",@"小",@"倍",@"er"];
[ary enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%ld,%@,%@",idx ,[ary objectAtIndex:idx],obj);
}];
6.
NSArray *ary = @[@"我",@"是",@"張",@"小",@"倍",@"er"];
dispatch_queue_t queue = dispatch_queue_create("queue", DISPATCH_QUEUE_CONCURRENT);
dispatch_apply([ary count],queue, ^(size_t index){
NSLog(@"%ld,%@",index,[ary objectAtIndex:index]);
});