Objective-C基礎4

1.強指針:默認的狀況下全部的指針都是強指針,關鍵字__strongjava

弱指針:__week關鍵字修飾的指針ui

2.ARC:編譯器將自動在代碼合適的地方插入retain、release、autoreleasespa

ARC的判斷準則,只要沒有強指針指向對象,對象就會被釋放代理

3.判斷是不是ARC指針

查看項目信息;不能使用retain、release、autorelease、retainCount,在dealloc方法中不能使用[super dealloc]code

正常建立對象,不用手動釋放對象對象

4.ARC下循環引入的問題,解決辦法一端使用強指針一端使用弱指針blog

5.@property參數繼承

strong強指針內存

week弱指針

6.__week Person *p=[[Person alloc]init];//不合理,對象一建立出來就被釋放掉,對象釋放掉後,ARC把指針設置爲nil

7.分類的使用,擴展原來類的方法

#import "Student.h"

@interface Student (study) -(void)run; @end
#import "Student+study.h"

@implementation Student (study) -(void)run{ NSLog(@"study run"); } @end

分類裏的方法跟原來的方法同樣使用,若是分類中和類中方法名同樣,優先調用分類的方法

8.非正式協議

所謂的非正式協議就是類別,即凡是NSObject或者其子類的類別,都是非正式協議

9.擴展-特殊的分類

分類名爲空,能夠增長類的實例變量和方法,可是方法須在類自己的.m文件中實現

變量和方法至關於私有

10.block的定義

int (^myblock)(int,int)=^(int a,int b ){   };

調用方式:

myblock(1,2);

能夠再給myblock賦值

22.typedef bolck

typedef int (^Myblock)(int,int)=^(int a,int b ){   };

Myblock myblock1,myblock2;

23.block內能夠訪問外部的變量

當定義block的時候,block會把外部變量的值以const的方式複製一份,放到block所在的內存中,不能修改

全局變量能夠修改

外部變量加__block那麼block內部再也不以const的方式拷貝,能夠在block內部修改,再後面的代碼中,所有使用的是堆區空間

24.block的應用場景,把代碼塊做爲參數傳遞

或者block做爲返回值

25.助記符 inlineBlock

26.protocol相似java的藉口,但協議中的方法不是所有必須實現

步驟:

定義協議

@protocol 協議名稱<NSObject>

@end

採納協議

@interface Person:NSObject <協議1,協議2>

@end

實現協議的方法

當遵照了某個協議後,就有了這個協議中全部方法的聲明

協議還能夠遵照其餘的協議

OC不能繼承多個類,可是可以遵照多個協議

27.protocol方法的修飾符

必須實現@required

選擇實現@optional

28.id類型後面加<協議名>表示只能賦值遵照了協議的對象

類名後面加<協議名>表示只能賦值遵照了協議的當前類的對象

29.協議代理模式

傳入的對象,代替當前類完成了某個功能,稱爲代理模式

30.@protocol

在.h文件中用@protocol 協議名 代替import導入協議

在.m文件中導入協議

在main文件中再使用時導入協議

相關文章
相關標籤/搜索