-objective-c與swift打印日志的區(qū)別
objective-c中的日志打印代碼:
NSLog(<#NSString *format, ...#>)
NSLog(@"OC 中的日志信息");
第一行代碼是打印的格式禀倔,打印方法,打印函數(shù).
第二行代碼是在<#NSString *format, ...#>所輸出的信息缕贡,在日志中得到的信息為:OC 中的日志信息.
objective-c中在打印日志里增加參數(shù),打印參數(shù)的信息:
NSLog(@"OC 中的日志信息 %d",num);
NSLog(@"%d + %d = %d",one,tow,equalTo);
第一行代碼中的%d是占位符而num是變量的名稱翁授,打印的信息是:OC 中的日志信息num變量中所儲存的值.
第二行代碼打印的是one+tow=equalTo這三個變量的值和符號而不是進行計算.
** swift語言的日志打印代碼:**
println();
println("swift 中的日志信息");
第一行代碼是swift的打印函數(shù).
第二行為打印的具體內(nèi)容輸出日志信息為:(swift 中的日志信息).
swift中在打印日志里增加參數(shù),打印參數(shù)的信息:
println("呵呵",num,"哈哈");
println("a的值為",a,"b的值為",b);
第一行代碼中bum為變量的名稱晾咪,與OC中不同的是不再需要占位符而是直接用,號隔開就可以打印收擦,打印結果為:(呵呵,num的值谍倦,哈哈).
第二行代碼a,b都是變量,打印的值為 (a的值為,a變量的值,b的值為,b變量的值).
- objective-c與swift變量與常量
** 在objective-c中的常量:**
NSString * const name = @"jack";
這行代碼代表著一個名叫name的常量 指向了一個內(nèi)存區(qū)域儲存了一個字符串jack塞赂,并且這個指向的區(qū)域不可以改變,也就是說無法在賦值新的字段給這個常量了.
** 在objective-c中的變量:**
NSString * name = @"jack"
name = @"Anthony"
第一行代碼代表著一個名叫name的變量昼蛀,指向了一個內(nèi)存區(qū)域儲存了一個字符串jack.
在第二行代碼中將一個新的字段Anthony的坐標賦值給了name宴猾,這樣變量name所儲存的值發(fā)生了改變,并且在聲明objective-c的變量與常量中必須指定數(shù)據(jù)類型.
** 在swift中的常量:**
let b = 2;
常量在聲明的時候必須賦值 并且只能賦值一次,常量賦值時要用 let 做前綴.
在swift中的變量:
var b;
變量在聲明的時候可以不賦值叼旋,并且可以賦值覆蓋多次仇哆,swift不管是常量還是變量在聲明的時候可以不指定數(shù)據(jù)類型,編輯器會自動補上.
在swift中數(shù)據(jù)類型的聲明:
var b:Double = 66.66;
數(shù)據(jù)常量變量類型 變量名稱 :數(shù)據(jù)類型 = 值夫植;
var = 變量讹剔,常量的修飾符
b = 變量名稱;
: = 指定數(shù)據(jù)類型的修飾符
Double = 數(shù)據(jù)類型
“=” = 賦值符
66.66 = 值详民;
以上就是一個變量并且指定聲明數(shù)據(jù)類型的格式;
- objective-c與swift的判斷與循環(huán)
在objective-c中if與else的使用:
objective-c是一門弱語法,在使用if與else中我們可以寫出以下代碼:
- 1
NSString *str = @"jack";
if(str){
str = @"杰克";
}
- 2
int a =3;
int b =3;
if(a-b){
a = 4;
}
在第一個代碼中我們首先創(chuàng)建了一個字符串并把字符串放進if的判斷語句中,這時if判斷對象不為nil,判斷條件成功,執(zhí)行if代碼塊中的語句.
在第二個代碼中,設置了2個變量,在if的判斷語句中做減法,在基本數(shù)據(jù)類型中,如果在if判斷語句的結果不為0就都為真,如果是0就為假,所以第二個代碼段中的if語句不執(zhí)行
在swift中if與else的使用:
var a =3;
var b =3;
if(a == b){
a = 4;
}
在swift中if( )中所填寫的代碼必須是一個布爾表達式,不可以和objective-c那樣放一個變量看是否為0或是否為nil
在objective-c中switch,case,default的使用:
int i = 0;
switch (i) {
case 1:{
int b = 3;
}
break;
default:
NSLog(@"沒執(zhí)行");
break;
}
在objective-c中switch是可以使用整數(shù)型和枚舉型來進行流程分支的控制當獲得匹配的case值時,執(zhí)行case后的代碼段,要注意的是如果case代碼段后面沒有break那么case會繼續(xù)執(zhí)行下去,直到遇到break,default可以不寫,需要注意的是如果在swich的case代碼中定義變量那么要加{}來將代碼擴起來.
在swift中switch,case,default的使用:
let name = "jack"
switch name {
case "jack":
let print = "hehe";
println(print);
case "David":
let print = "heihei";
println(print);
default:
let print = " houhou";
println(print);
}
在swift中switch要比objective-c能夠使用更多的數(shù)據(jù)類型來進行流程控制,并且在case中不需要在加入break如果執(zhí)行一個case會自動的彈出不會執(zhí)行其他的情況,在case中可以直接定義變量,在swift中如果case不能包含所有可發(fā)生的情況就必須有default.
fallthrough 貫穿 where
fallthrough
在case最后加等價于以前的OC不寫break
where
在case后 可以做額外的條件判斷
在objective-c中for循環(huán)的使用:
for (int i = 0 ; i <3 ; i++) {
NSLog(@"%d,",i);
}
for (NSString * str in arr) {
NSLog(@"%@",str);
}
在objective-c中的2種循環(huán):
第一種種先執(zhí)行第一個表達式,然后執(zhí)行括號中的代碼,在執(zhí)行第二個表達式,根據(jù)真假,如果是真就執(zhí)行第三個表達式,然后繼續(xù)繼續(xù)執(zhí)行代碼,如果為假的情況下跳出循環(huán).
第二種,將arr中的所有元素挨個賦值給str 并執(zhí)行代碼段.
在swift中for循環(huán)的使用:
for var index = 0 ; index < 7 ; ++index{
println("傳統(tǒng)for \(index)");
}
與傳統(tǒng)的objective-c區(qū)別不大唯一變化的是var聲明方式,和 ()可以省略
for index in 1...3{
println(index);
}
將 1...3 包含3的數(shù)字 依次賦值給index 每賦值一次執(zhí)行一次代碼段
在objective-c中while,do...while的使用:
while (YES) {
}
do{
}while(YES);
objective-c中和其他語言沒有太大的區(qū)別,while是先判斷{}內(nèi)的表達式,然后執(zhí)行代碼段,而do...while是先執(zhí)行依次代碼段在判斷表達式.
swift中while,do...while的使用::
var i = 0;
while i < 7{
i+=1
}
do{
i-=1;
}while i < 0 ;
swift中while,do...while與objective-c基本沒什么區(qū)別.
2.0 將do - while改版
repeat{
print("循環(huán)")
}while(true);