首先自我介紹吧,南昌大學軟件工程專業2015界畢業生,從大學牲變到程序猿,由於在學校里只學了Java語言和B/S架構開發,於是乎出來實習和工作也是搞Java網頁開發。
但是作為一名果粉,現階段想轉IOS開發,最近也開始自學了,寫點東西記下來吧
2015/9/17
Day 1
安裝虛擬機並安裝Mac OS X系統(苦逼的我還在用聯想Y-470)
開始看C語言基礎,由於大學里學過一點,還是比較輕松的
2015/9/19
Day 2
由於Java中沒有指針,開始看指針的相關知識
2015/9/20
Day 3
1)指針作為參數,在使用的時候要傳給它相應的地址值
2)數組名表示數組的首地址,數組作為參數時,系統會轉化成指針,所以盡量用指針作為參數
3)數組接收字符串:可變字符串
指針接收字符串:不可變字符串(該字符串在內存的常量區) //感覺類似Java中的String
4)指向函數的指針 用於在把函數當參數傳遞的情況 //類似Java的回調函數
2015/9/21
Day 4
開始學習OC(Objective-C)
OC中類的寫法
@interface <#class name#> : <#superclass#>
//屬性以及反復聲明(+表示類方法,-表示對象方法)
@end
@implementation class name
//方法的實現
- (返回值類型)方法名:(參數1類型) 參數1 方法名/*最好寫參數說明*/:(參數2類型) 參數2 .....{
}
//提倡將方法名寫的像句子一樣好讓人理解
//個人剛開感覺方法名 很長,不適應,后來用多了感覺非常棒!
@end
OC中需要調用方法時直接寫一個[ ],然后左邊寫使用者,右邊寫方法名
OC中想要操作對象的屬性和方法,必須用指針
2015/9/22
Day 5
常見錯誤
1)只有聲明,沒有實現
2)缺少@end
3)成員變量不在{ }內
4)聲明中沒有初始化
最常見的異常信息
unrecognized selector sent to instance
發送了一個無意義的消息給實例/對象
例子:NSString
定義以及初始化
NSString *str = @"huihui";
方法
[NSString stringWithFormat:...];//類方法
[str length]; //對象方法
封裝思想,跟Java相同,屬性變量一般無妨讓外界直接使用,而是提供set,get方法來供別人使用
set方法名為 setXxx://xxx表示屬性名,跟Java相同前面有set並后面接駝峰式
get方法名為 xxx //xxx表屬性名,跟Java不同,OC中直接用屬性名做get方法名
self 關鍵字 相當於Java中的this
2015/9/23
Day 6
面向對象語言的三大特征:封裝,繼承,多態。這對於我來講很簡單,當初Java的興趣就是源於面向對象的思想
前面說了封裝,再說OC里的繼承
總父類NSObject
其中常用的基礎方法有 new,description(類似Java的toString方法)等等
OC為了迎合Java程序員,加入了點語法,哈哈^_^贊一個
對象.屬性(只能用於屬性)
實質是編譯器在后台調用set方法,get方法
對應Java中有自動生成set,get方法的方式,OC中當然也有,而且更棒,你在類文件中不需要看見set,get方法(除非你重寫他干特定的事)
這樣類文件很精簡,不想Java的類文件有一大坨都是set,get方法
@property 類型 變量名;
像上面那樣,簡單的加上@property
id 萬能指針 相當於NSObject *
構造方法的寫法 以init開頭,方法中調用 super init方法
(instancetype) initWith... {
if (self = [super init]){
...
}
return self;
}
alloc方法是創建一個沒有初始化的對象
init初始化對象
一般不用new ,先alloc再 init
2015/9/24
Day 7
自定義構造方法
1)一般在開發中,需要給類一個對象方法和類方法,方便使用
對象方法 init開頭
類方法 方法名開頭與類名一致(首字母小寫)
構造方法中盡量用self,提高擴展性
2)如果A類中導入了B類,而B類中也導入了A類
這樣會造成循環引用
解決方法:不用#import引用,用@class導入類 (.h文件,也就是聲明文件中)
但@class僅僅是告訴編譯器某某東西是個類,如果需要導入其中的成員和方法時,還是要用#import導入