Objective-C基礎

來源:互聯網
上載者:User

標籤:

1.C語言面向過程,OC物件導向

2.第一個OC程式

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {    @autoreleasepool {        // insert code here...        NSLog(@"Hello, World!");    }    return 0;}

1)import引入標頭檔可以防止重複包含

2)Foundation/Foundation.h檔案包含了很多標頭檔,引入這個等於把OC的庫檔案都引過來了

3)@autoreleasepool

4)NSLog與printf比較

NSLog自動換行,printf不會

NSLog會輸出時間等項目資訊,printf不會輸出調試資訊

NSLog函數的參數是一個NSString對象,printf是一個字串常量指標

列印字串用%@,NSString *[email protected]"ancc";NSLog(@"%@",str1);

[email protected]""代表字串

4.文檔注釋

/**

*

**/

5.增強型for迴圈

6.類的定義

////  main.m//  OC1////  Created by fanyafang on 15/10/30.//  Copyright © 2015年 itcast. All rights reserved.//#import <Foundation/Foundation.h>#pragma mark Person類@interface Person : NSObject{    @public    int _age;    NSString *_name;}    -(void)getAge;@end@implementation Person    -(void)getAge{        NSLog(@"dddd");    }@end#pragma mark int main(int argc, const char * argv[]) {    @autoreleasepool {
Person *p=[Person new]; p->_age=10; NSLog(@"%d",p->_age);

      [p getAge];

    }    return 0;}

7.記憶體的理解

代碼區:存放類定義,載入一次

堆區:存放案例變數,儲存了代碼區類的地址

棧區:存放對象

8.NSString的用法:

1)建立字串的方法

NSString *[email protected]"This is a String!";

NSString *s=[NSString new];

NSString *imgName=[NSString stringWithFormat:@"xxxxxxxx%02d.jpg",i];//格式化建立字串

NSString *s2=[[NSString alloc] initwithString:s1];//用一個已經存在的字串建立一個新的字串

2)輸出一個字串

NSLog(@"%@",asstring);

3)字串長度計算方法

C語言中用strlen函數

OC中用NSUInterger len=[s1 length];//NSUInterger無符號長整型

1個漢子按1個長度計算

9.OC的多檔案開發

標頭檔和類實現檔案分開編寫,用import包含

10.類方法的學習

11.匿名類

使用匿名類調用類方法:[[Car new] stop];

[Car new]等價於[[Car alloc]init]

匿名類的優點:可以簡化代碼,方便方法的調用;缺點:匿名對象執行個體化後只能正確的使用成員變數一次。

 12.get-set方法的編寫

13.對象之間的關係:

組合(葡萄) 依賴(一個對象的方法參數是另一個對象) 關聯(擁有,一個類的成員是另一個類的對象)

13.OC中沒有重載,類的方法不能同名

14.static的用法

1)在方法中延長變數的生命週期

2)在實作類別中定義;在介面類中定義,只在讓前檔案中有效

15.self的使用

1)對象方法中,調用另一個對象方法

2)在類方法中,調用另一個類方法

3)修飾變數-在set方法中,形參與執行個體變數名稱相等,用self取執行個體變數

16.繼承

1)不能和父類定義一樣的變數

2)單一繼承,不支援繼承多個類

3)支援多層繼承子類也可以被繼承

17.案例變數修飾符

public:公開的,在其他類中也可以訪問

protected:受保護的類型,只能在當前類和子類中訪問

private:不能直接存取

.h檔案中沒有聲明的變數和方法,只在.m檔案中定義,不能被繼承和使用

18.%@列印對象的地址,預設調用對象的description方法,可以重寫此方法

19.多態:不同的對象以自己的方式響應相同名稱方法的能力稱為多態

父類指標指向子類的對象

20.類的本質是類對象

1)Class c1=[d class];Class c1=[d1 class];如果d和d1是同一個類的對象,那個c1和c2指向相同的地址

2)擷取方式,通過案例對象擷取Class c1=[d class];,通過類名擷取Class c1=[Dog class]; 

3)類對象的使用,代替類名new對象

21.SEL [email protected](test)//手動把test方法封裝成sel類型

[p performSelector:s1];//向test方法發送sel訊息,這兩句話相當於[p test];

22.點文法的本質是調用getter、setter方法,不是訪問成員變數

對象.屬性=...;//替換為set方法

...=對象.屬性;//替換為get方法

[email protected]的使用

寫在聲明檔案中,相當於定義get、set方法聲明

#import <Foundation/Foundation.h>@interface Animal : NSObject{    int _age;}@property int age;//-(void)setAge:(int)age;//-(int)age;@end

[email protected]的使用

寫在實現檔案中相當於注釋部分的代碼

#import "Animal.h"@implementation Animal@synthesize age;//-(void)setAge:(int)age{//    self->age=age;//@synthesize age會自動建立一個age執行個體變數
//}//-(int)age{//    return self->age;//}@end

@synthesize age=_age;//指定案例變數名,不會操作預設的變數

相當於:

//-(void)setAge:(int)age{//    _age=age;//}//-(int)age{//    return _age; //}

xcode4.4之後,可以只使用@property而不使用@systhesize,並且不用定義帶有底線的變數

操作的是帶有底線的案例變數,如果當前類沒有底線的案例變數,則系統會幫我們產生。注意該變數是私人的(相對的,隱藏的)子類看不到

@property的增強型,在.m檔案中重寫get、set方法,但是不能同時重寫,只能重寫一個

25.動態類型和靜態類型

動態類型:父類的指標指向子類的對象

靜態類型:

26.id的使用,id是一個萬能指標,可以指向任何對象

NSObject和id都可以指向任何對象

NSObject對象會進行編譯時間檢查(需要強制類型轉換)

id不需要強制類型轉換,id可以直接用

編譯器看到id以後,認為是動態類型,不在檢查

id obj=[Animal new];

27:動態綁定

內省

動態類型檢測:

1)判斷類型

1))判斷某個對象是否是類的執行個體對象,或者子類的案例對象

BOOL isKind = [ani isKindOfClass:[Animal class]];(對象和類)

2))判斷是否是這個類的案例,不管是否是這個類的子類的案例

isMemberOf(對象和類)

3))判斷是否是子類的案例

isSubClassOfClass

BOOL isKind = [Dog isSubClassOfClass:[Animal class]];(類和類)

 2)方法響應的檢測

1))判斷對象能否響應指定的方法:

respondsToSelector:方法的SEL

2))判斷類能否響應指定的方法

instanceResponseToSelector:方法的SEL

3)回應程式法

無參:performSelector:SEL

有一個參數:performSelector:SEL withObject:@"參數"

 有兩個參數:performSelector:SEL withObject:@"參數" withObject:@"參數2"

28.構造方法init,是一個對象方法,返回的是一個對象-調用init方法的對象

29.重寫構造方法

-(instancetype)init{    self = [super init];    if(self){        _age=10;    }    return self;}

 

Objective-C基礎

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.