原创 @property @synthesize

Xcode 中沒有自動生成 set get 方法的快捷方式,OC 中提供了標籤來進行 成員變量 get set 方法的聲明和實現 .h 文件聲明 { int _age; } @property age;// 自動生成 a

原创 OC 分類注意事項

分類會覆蓋原來類中已經實現的方法 分類可以訪問原來類中的成員變量,但是不能添加成員變量 如果兩個分類中都實現了某個方法,執行哪個方法和分類的編譯順序有關,編譯順利那裏看 項目名稱 -> build phased -> compi

原创 autorelease

自動釋放 手動內存管理的時候由於每次 alloc 以後都要調用 release 方法,爲了簡化管理,可以使用自動釋放池 使用方法是 Person *p = [[[Person alloc]init]autorelease] 這句話的意思是

原创 CGPoint/NSPoint CGSize/NSSize

CGPoint 和 NSPoint 是一個東西 typedef CGPoint NSPoint 後臺是這樣來的 CGPoint 是一個結構體 裏面有兩個屬性,NSFloat(其實就是 double) 類型的 X 和 Y 開發過程中是用

原创 NSRange

NSRange 是一個結構體 這個結構體和簡單 只有兩個屬性 typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange; lo

原创 autorelease 的封裝

由於代碼 Person *p = [[[Person alloc]init]autorelease]; 太長,所以可以用類方法對他進行封裝 + (id)person { return [[[Person alloc]init]au

原创 js 的原型鏈

從別的博客粘過來的,做個備忘錄,以後好查。 原型鏈(Prototype chain) Javacript 是一門高度抽象的面向對象(object-oriented)語言, 它沒有類的概念,但是,重用[reuse]這個理念沒什麼不同(某些方

原创 @property 的屬性

OC的 @property 語法可以自動幫助生成 成員變量,get 方法,和set 方法,但是 @property 還可以有一些屬性可以對生成的方法進行精細化控制。 這些精細化控制主要分幾類: 1、跟set 方法內存管理相關的 * as

原创 @class

@class 的作用:僅僅告訴編譯器這是一個類 開發中引用類的規範 1、在 .h 文件中用 @class 來聲明類 2、在.m 文件中用 #import 來包含類的所用東西

原创 protocol簡單使用

可以聲明一大堆方法(不能生命成員變量) 只要某個類遵循了這個協議,就相當於擁有了這個協議中的所有方法聲明 只要父類遵循了某個協議,就相當於子類也遵守了 協議的文件只有一個 @protocal myprotocal

原创 空指針和野指針

空指針: 指針不指向任何對象 野指針:指針指向的對象已經被銷燬,野指針指向的是殭屍對象 小貼士:在指針指向的對象被銷燬後,可以把這個指針對象設置爲nil , 就不會出現 exc_bad_access

原创 SEL

OC 中方法會被封裝成 SEL 對象,當我們調用一個方法的時候,其實會在實例對象中把要調用的方法封裝成 SEL 對象,然後通過 isa 指針找到 類對象的方法列表,調用對應的方法 SEL 類型的定義 typedef struct objc

原创 ARC和非ARC區別

ARC 是編譯器特性 看到 @property (retain), 自動在 dealloc 裏面添加相關屬性的 release , 看到 你在main 方法裏面調用 alloc ,就在後面自動給你添加 release 注意不是垃圾回收,垃

原创 內存管理原則

有 alloc 必須有 release set 方法規範 基本數據類型,直接賦值 - (void) setAge:(int)age { _age = age; } OC 對象類型 - (void)setCar:(Ca

原创 typedef block

typedef int (*sump) (int,int); sump p = sum; sump p2 = sum; 定義了一個block 默認情況下 block 內部可以訪問外部的變量,但是不能修改外部的變量。 外部變量加上 __b