強指標:預設情況下所有的指標都
是強指標型(strong) 在arc當中
,乙個物件只要沒有強指標引用,
那麼它就會被系統**
弱指標:弱指標不影響物件的**
在arc當中,所有的跟手動管理記憶體
相關的方法都不能呼叫比如說
dealloc不能重寫父類 了(不能
super dealloc)
//__weak定義乙個弱指標
__weak person * p2 = p//弱指標
不影響物件
//強指標引用使用oc物件型別,
@property (nonatomic,strong)
我們用別人的專案有可能用的是非
arc的專案
-fno-objc-arc
-f-objc-arc
第三方框架:就是別人寫的專案,
我們要用,如果他是非arc機制,給
編譯器加乙個引數-fno-objc-arc就
是告訴編譯器這個檔案就是非arc機
制的,這樣就不會報錯了,並且非
arc手動記憶體管理的方法都能夠正常
呼叫 了,在非arc專案中引入 arc機
制的檔案,給編譯器加乙個引數 -
f-bojc-arc,就是告訴編譯器這個文
件是arc機制的
edit->refactor-convert to
arc迴圈引用問題
arc機制中如果出現了迴圈引用問題
, 只需要把其中引用一方變成,
weak弱指標既可解決問題
block型別
int bool char float double
nsobject * id sel
他們的共同特點就是能夠定義成變
量1.int a = 0;
bool b = yes;
2.當做函式,和方法的引數的傳遞
(void) test(int) a
block:是oc中比較特殊的資料型別
,它用來封裝一段**,並且可以
把這段**當做引數傳遞
1.通過{}來封裝**
1.void test():返回值為空,並且沒
有引數{}
^{};
2.int test();有返回值,還有乙個引數^
3.int test(int a);有返回值,還有一
個引數^(int a)
4.int test(int a,int b)有返回值,有
多個引數
1.定義乙個返回值為空,並且沒有
引數的block變數
void (^myblock)() = ^{};
2.定義乙個有返回值的,並且沒有
引數的block變數
int (^myblock)() = ^;
3.定義乙個有返回值,並且有乙個
引數的block變數
int (^myblock)(int a) = ^(int
a);4.定義乙個有返回值,並且有多個
引數的block變數
int (^myblock) (int a,int b) =
^(int a,int b)
block好處就是,我定義block的人
本身可以不關心
//block內部演算法的實現
//誰呼叫有block引數的方法,誰就
給我實現block內部演算法
協議協議就是用來宣告方法
@protocol myprotocol
- (void)test;
@end
在.m中實現協議中的方法
@required表示以下方法必須實現
- (void) test1;
@optional 表示可選實現
- (void)test2;
可選的就不會在遵守協議的那個類
裡面顯示
但是,required就會提示你必須實
現協議本身他可以遵循其他的協議
協議可以遵循多個
基協議協議就是用來宣告方法的
@protocol myprotocol
內部宣告方法
@end
協議內方法的約束
@required必須實現的方法
@optional 選擇實現
預設的方法就是 必須實現的
讓某個類遵循協議只需要在類繼承
後面 《協議名字》
類可以遵循多個協議《協議名,協議
名,協議名》
協議本身也可以遵循其他協議《協議
名字》協議當中不可以宣告成員變數
子類繼承了父類,同樣也會繼承父
類遵循的協議
nsobject * obj = [[nsobject]
init];
id obj2= [[nsobject alloc] init];
//定義oc物件變數時,可以給他加
乙個協議約束
person*p =
[[person alloc] init];
@property (nonatomic,strong)
car* car;
//如果你要限定某個物件,一定要實
現某個協議,那麼我們一般用
idobj 去定義
@property (nonatomic,strong)id
obj;
//與@class功能一樣,就是告訴類
,myprotocol是乙個協議
@protocol myprotocol;
把協議宣告到 乙個類的.h檔案中,
其他類繼承之外,沒辦法去遵循這
個協議了
單獨把協議定義成乙個.h,任意類
都可以遵循這個協議,
黑馬程式設計師 ARC與autorelease
一 property 引數設定 非 arc機制下 1 set方法記憶體管理相關引數 assign 直接複製,一般用於非 oc型別的資料,預設為 assign retain release 舊值,retain新值 copy release 舊值,copy新值 2 是否生產set方法 readonly ...
黑馬程式設計師
asp.net android ios開發 net培訓 期待與您交流!map hashtable 底層是雜湊表資料結構,不可以存入null鍵和null值。該執行緒是同步的,jdk1.0出現,效率低。hashmap 底層是雜湊表資料結構,允許使用null鍵和null值。該集合執行緒是不同步的,將has...
黑馬程式設計師
1.了解反射 反射 就是通過class檔案物件,去使用該檔案中的成員變數,構造方法,成員方法。person p new person p.使用 要想這樣使用,首先你必須得到class檔案物件,其實也就是得到class類的物件。2.反射中的類 class類 成員變數 field類 構造方法 const...