你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS學習之——新手基礎學習資料分享

IOS學習之——新手基礎學習資料分享

編輯:IOS開發綜合

/*
1、OC簡介:
OC 是C語言的超集,它在C語言的基礎上增加了最小的面向對象的語法
2、對比C來學習OC
數據類型、關鍵字、流程控制、函數
3、面向對象的思想
1、它是一種更接近於現實生活的一種編程思想
2、它思考問題強調的誰去做
3、要完成某項任務,首先去找完成該任務對象,如果沒有創建一個,然後指揮對象做事。
4、對象
在面向對象中萬物皆對象
從另一角度的來說,現實生活中任何具體的事物都可以認為是一個對象
5、類
從編程的設計:現實中一類事物抽象,抽象就是提取這一類事物共有的屬性和行為
從編程語言:創建對象必須要類,對象是類的實例;
6、類與對象關系
汽車圖紙與汽車的關系
7、設計類
1、通過文字描述來設計一個類
名詞提取法:只要遇到相關的名詞都可以提取一個類
2、看圖提取一個類
圖上具有一些共性的事物都可以提成一個類
一個類包含三個部分:
1、類名:這一類事物的名稱
2、屬性:某類事物共有一些狀態特征
3、行為:某類事物共有一些功能特征

8、創建類
0、設計類
1、聲明:就是對的概括說明,它是給使用該的人看的
1、確定類名
2、要繼承NSObject,是為了讓類有創建對象的能力
3、聲明必須以@interface 開頭 以@end結尾
4、聲明屬性,必須在@interface 與@end之間的大括號中
聲明屬性的時候不可以對屬性進行初始化
5、聲明方法,必須在{} 與 @end之間進行聲明,不可以有方法的實現
格式:方法類型標識符 (返回值類型) 方法名:(參數類型) 參數名稱 方法名:(參數類型) 參數名稱
1、所有的數據類型都要使用小括號擴起來
2、一個參數對應一個冒號
3、冒號是方法名稱一部分

 2、實現:實現聲明所有的方法
    必須寫在@implementation 與@end

 注意點:1、只有聲明沒有實現的類,鏈接的時候就報錯
        2、只有實現沒有聲明的類,可以使用(OC弱語法),但是編程的時候也不可以這麼做
        3、聲明與實現不可以嵌套,一個類的內部也不可聲明其他類
        4、少@end
        5、聲明的屬性沒有寫在大括號中
        6、聲明的方法寫在了大括號中
        7、調用類的對象方法的時候只能通過該類對象,不能像函數一樣直接調用
        8、函數不能直接訪問某個對象的成員變量
9、函數與方法
   1、函數都是平行,沒有誰隸屬於誰的關系
   2、函數中定義變量都是局部變量,函數中能直接操作一個類的成員變量
   3、函數的調用是直接通過函數名稱進行調用的
   對象方法:
   1、它是隸屬於該類的對象的,只能該該類的對象調用
   2、在對象方法中可以直接訪問成員變量,因為他們都是隸屬於該類的對象的
10、對象的創建
   Object * obj =  [類名  new];
   1、為類的對象在堆中開辟存儲空間
   2、將所有成員變量初始化為0,如果是對象類型的就初始化為nil
   3、返回指向該對象的指針

*/

// NSString 對象的創建

// 1、通過字面量創建
NSString *str = @”天氣冷了,注意身體!”;
NSLog(@”%@”,str);
// 2、通過對象方法
// NSString *str1 = [NSString new];
NSString *str1 = [NSString alloc];
// str1 = [str1 init];
str1 = [str1 initWithUTF8String:”大家要努力學習啊!”];
NSLog(@”%@”,str1);

// 3、通過類方法創建對象
// 類方法它是隸屬於類的,它是通過“類名”調用
// 此處的格式化字符串與NSLog中的格式化字符串是一樣的
NSString *str2 = [NSString stringWithFormat:@”今天股票有跌%d個點!”, 10];
NSLog(@”%@”,str2);

// 4、NSString 對象中表示長度函數
// command + 鼠標左鍵點擊進去
// length 計算的是字符串中有幾個字符
long len = [str length];
NSLog(@”%ld”,len);

char *strc = "天氣冷了,注意身體!";

/*
BOOL OC提供的一種Boolean類型,就是用來表示邏輯上真與假這個類型

BOOL 在OC中有兩個取值 YES 和 NO
YES 真 對應數字 1
NO 假 對應數字 0

使用BOOL可以提高代碼可讀性,減少代碼的出錯率

所有數據類型都可以定義變量
所有的數據類型都可以作為形參或實參
所有數據類型類都可以作為返回值

*/
03-對象與函數

//對象作為函數參數傳遞是地址傳遞
//在函數可以通過對象訪問它裡面成員變量
//也可以對象調用它的對象方法(成員方法
/因為對象是被創建堆中所以可以作為函數的返回值,
//而局部變量不可以作為函數的返回值的,應為它在棧中,離開函數就被消耗

04-對象與方法(掌握)
/*
1、對象做方法參數傳遞是地址傳遞
2、對象可以在方法中進行連續的傳遞
3、對象可以作為方法的返回值
*/

*
對象方法:
1、聲明和實現方法時候,以 -開頭
2、對象方法是隸屬於對象,只能通過對象調用
3、對象方法中可以直接訪問成員變量,因為對象方法和成員變量都是隸屬於該對象的
4、對象方法中可以調用其他對象方法
5、對象方法中也可以調用類方法
類方法:
1、聲明和實現的標識符都是 +
2、類方法它是屬於類本身的
3、類方法是直接通類名調用的,不能通過對象調用
4、類方法不能訪問成員變量,因為成員變量是對象的,不是類的
5、在類方法中不能直接調用對象方法,也就是說不能通過self來調用對象方法
如果你要再類方法中調用對象方法
1、在類方法中創建一個對象
2、把對象作為形參傳入

類方法優點:
1、調用類方法不用創建對象,所以節省內存
2、通過對象調用對象方法,首先要通過對象找他isA指針,然後在去類中找相應的方法,所有比較慢
3、直接通過類調用方法,直接找到這個類然後調用相應的方法就OK了,所有類方法的效率比較高
4、當方法中不需要使用到成員變量的時候就使用類方法
/*
對象方法:
1、聲明和實現方法時候,以 -開頭
2、對象方法是隸屬於對象,只能通過對象調用
3、對象方法中可以直接訪問成員變量,因為對象方法和成員變量都是隸屬於該對象的
4、對象方法中可以調用其他對象方法
5、對象方法中也可以調用類方法
類方法:
1、聲明和實現的標識符都是 +
2、類方法它是屬於類本身的

*/
@class CZSoldier;
//告訴編譯器,這是一個類,但是類中有什麼樣的東西,@class 是不能告訴編譯器的

/*
在iOS開發中,一個類的聲明就是一個頭文件(.h),一個類實現是一個實現文件(.m)
*/
5、多文件開發
1、為了方便程序管理,我們把一個類分為兩個文件
.h 文件:用來存放類的聲明,它是給使用該類的人看的,聲明就相當於表盤
.m 文件:用來實現的類的方法的,就表內部實現,如齒輪
2、當我們需要使用某個類的時候,需要導入這個類的頭文件,不能導入實現文件
3、當某兩個類直接出現循環包含的時候,一端必須使用@class來聲明這個類
4、@class 僅僅是告訴編譯器這是一個類,其他關於類本身信息它都不知道,所這@class一般僅僅用在頭文件中

/*
封裝:
1、類是數據與功能的封裝,數據就是成員變量,功能就類方法或對象方法
2、對數據的封裝
如果我們把屬性設置為@public那麼,這個屬性外部就可以任意的修改,我們就失去管理這個屬性的權利
1、當你把屬性暴露在外部的時候,那麼你就是失去對它的管理,一旦這個屬性被多個人用的時候,如果再像管理這個屬性就變得非常麻煩,這個類的可維護性就變得很差

 2、怎麼對數據進行封裝
    1、為每一個屬性提供getter 和 setter方法
    2、setter方法:又稱為寫方法,賦值給對象賦值
       1、必須是對象方法
       2、它沒有返回值
       3、名字 set + 屬性名稱去掉下劃線,首字母大寫
       4、必須提供一個參數,參數類型必須與所對象的成員變量的類型一致
    3、getter方法:又稱為讀方法,賦值讀取屬性的值
       1、必須是對象方法
       2、必須要返回值,並且返回值類型要與成員變量類型一致
       3、方法名必須是成員變量去掉下劃線
       4、一定是空參的

*/
@interface CZCar : NSObject
{
int _wheels;//車輪數‘
double _speed;//速度
}

//_wheels setter
- (void) setWheels:(int) wheels;

(int) wheels;

(void) setSpeed:(double) speed;

(double) speed;

@end

//但是外界還是要訪問這個屬性的,但我們不讓直接方法,而是提供一個讀方法 getter方法,寫方法setter
//當我們把提供setter方法後,程序就會更好的靈活性,可以快速響應外界需求的變化
//age寫方法(setter)
/*
1、必須是對象方法
2、它沒有返回值
3、名字 set + 屬性名稱去掉下劃線,首字母大寫
4、必須提供一個參數,參數類型必須與所對象的成員變量的類型一致
*/
- (void) setAge:(int) age;

//age讀 (getter方法)
/*
1、必須是對象方法
2、必須要返回值,並且返回值類型要與成員變量類型一致
3、方法名必須是成員變量去掉下劃線
4、一定是空參的
*/

(int) age;

//setter方法

//當在對象方法中訪問成員變量的時候,其中隱藏一個指針
/*
當方法中如果沒有與成員變量名稱相同變量,編譯器在編譯會自動給它加上一個self指針
如果有與成員變量同名的局部變量,那麼這個名字就是一個局部變量,編譯器就不會再給他加上self指針了
*/

/**
匿名對象:就是沒有名字對象
1、匿名對象僅用一次
使用場景:
1、當我們只要調用一個對象的某個方法一次的時候可以使用匿名對象
2、匿名對象可以作為函數的實際參數
*/
*
依賴關系:A對象作為B對象的局部變量或是方法形參的,B依賴與A,這時候我們稱A與B之間存在一種依賴關系

________________________以下內容了解
面向對象設計中:
耦合度:當修改一個對象的時候,對另外一個對象的影響程度
低耦合: 當修改一個對象的對其他對象影響比較小
高內聚:一個對象僅僅做自己相關的事情
面向對象設計原則:單一職責原則

import

import

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved