1. 你給我解析清楚喷舀,都有了CALayer了砍濒,為什么還要UIView??
分層設(shè)計,各司其職硫麻,策略和機(jī)制分離爸邢,calayer 只負(fù)責(zé)繪圖,其他不干拿愧,UIView 處理交互杠河,變動較快。
2.ios 中的 “位移枚舉” :
先看c 語言的枚舉>
typedef enum{
DirectionTypeUp,
DirectionTypeLeft,
DirectionTypeDown,
DirectionTypeRight
} DirectionType;
ios 的枚舉:
typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
UIViewAnimationTransitionNone,//默認(rèn)從0開始
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,
};
typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0, //表示1 :1左移0位
UIViewAutoresizingFlexibleWidth = 1 << 1, // 表示2 :1左移1位
UIViewAutoresizingFlexibleRightMargin = 1 << 2, // 表示4
UIViewAutoresizingFlexibleTopMargin = 1 << 3, // 表示8
UIViewAutoresizingFlexibleHeight = 1 << 4, //表示16
UIViewAutoresizingFlexibleBottomMargin = 1 << 5 //表示32
};
從c語言開始沿用過來的枚舉浇辜,保留至今券敌。iOS6和Mac OS 10.8以后引入了兩個宏NS_OPTIONS 和NS_ENUM來定義枚舉類型,本質(zhì)上這個兩個宏沒有區(qū)別柳洋,只是從字面上區(qū)分用途待诅。
NS_OPTIONS :用來定義 位移枚舉。
NS_ENUM: 用來定義 普通枚舉
3. 一個名詞:方法簽名
方法簽名由方法名稱和一個參數(shù)列表(方法的參數(shù)的順序和類型)組成熊镣。
注意卑雁,方法簽名不包括方法的返回類型。不包括返回值和訪問修飾符
注意:重載和重寫轧钓。重寫要求方法簽名必須相同序厉,返回值類型也相同,重載只要求方法簽名相同毕箍;重寫是覆蓋弛房,最終還是一個方法,調(diào)用的是子類的方法而柑,重載是方法的擴(kuò)展文捶,是多個方法;@override 關(guān)鍵字可以讓編譯器自動檢查是否重載的正確
4.@dynamic關(guān)鍵字和@synthesize關(guān)鍵字是用來做什么的
@synthesize 聲明編譯器需要自動合成屬性的存取方法
該關(guān)鍵字產(chǎn)生了兩個影響媒咳,自動生成一個下劃線開頭的實例變量粹排,另外自動生成了存取方法
@dynamic 用來標(biāo)明不需要在編譯期去關(guān)心存取方法是否存在,而后會提供
xcode 在迭代過程中已經(jīng)默認(rèn)合成了存取方法涩澡,@synthesize 不需要手動添加
另外一個文章可以幫助理解