目錄:
1.為什么開(kāi)發(fā)中不建議用int 和 double
2.OC中枚舉的定義
3.strong,weak,assign,copy關(guān)鍵字
4.OC中類(lèi)方法和實(shí)例方法的區(qū)別
5.成員變量和屬性的區(qū)別
6.[cell addSubview:]和 [cell.contentView addSubview:]方法的區(qū)別
7.服務(wù)器返回json數(shù)據(jù)和OC比對(duì)
8.開(kāi)發(fā)者賬號(hào)分類(lèi)
9.Core Foundation 和 Foundation 橋接注意事項(xiàng)
10. KVC簡(jiǎn)要底層原理
11.到底什么是多態(tài)
12.UIScrollView—ContentSize/contentOffest/contentInsert
13.LLDB調(diào)試按鈕
14.
15.
16.
Pragma Mark — NO.1 為什么開(kāi)發(fā)中不建議用int 和 double
#開(kāi)發(fā)中不建議用int 和 double 類(lèi)型的數(shù)據(jù),主要是考慮到版本適配的問(wèn)題
1.在5s之前是32位操作系統(tǒng)一铅,之后是64位
2.所以蘋(píng)果推薦用NSInteger 和 NSUInteger
NSInteger.png
用NSInteger 和 NSUInteger 不用考慮適配問(wèn)題
Pragma Mark — NO.2 OC中枚舉的定義
枚舉的標(biāo)準(zhǔn)寫(xiě)法.png
Pragma Mark — NO.3 strong,weak,assign,copy關(guān)鍵字
- 題目:
題目.png
strong,weak.png
而assign不會(huì)自動(dòng)置為nil
Pragma Mark — NO.4 OC中類(lèi)方法和實(shí)例方法的區(qū)別
1.屬于誰(shuí)
類(lèi)方法屬于類(lèi)對(duì)象 [NSString stringWithFormart]
實(shí)例方法屬于實(shí)例對(duì)象 [str length]
2.誰(shuí)調(diào)用
類(lèi)方法 類(lèi)對(duì)象調(diào)用
實(shí)例方法 實(shí)例對(duì)象調(diào)用
3.self 是什么
在類(lèi)方法里 self表示的是類(lèi)對(duì)象
在實(shí)例方法里 self表示是實(shí)例對(duì)象
4.是否可以訪問(wèn)成員變量
類(lèi)方法里 不可以訪問(wèn)成員變量
實(shí)例方法里 可以訪問(wèn)成員變量
5.方法調(diào)用
在類(lèi)方法里 可以調(diào)用實(shí)例方法也可以調(diào)用類(lèi)方法
在實(shí)例方法里 可以調(diào)用實(shí)例方法也可以調(diào)用類(lèi)方法
Pragma Mark — NO.5 成員變量和屬性的區(qū)別
#首先知道一個(gè)類(lèi)是由固有屬性和方法去描述其特點(diǎn)和行為方式的
(例如:車(chē)描述是什么樣的車(chē)皇帮,這輛車(chē)的用途是什么等等)
#1.背景:
在OC最初創(chuàng)建時(shí),是沒(méi)有屬性的概念的羽戒,是在2.0以后接入的勺远,屬性是為成員變量服務(wù)的
#2.為什么會(huì)出現(xiàn)屬性:
因?yàn)樘O(píng)果一直致力于簡(jiǎn)化程序員的編碼工作吞彤,所以當(dāng)類(lèi)中成員變量過(guò)多的時(shí)候,
我們就會(huì)發(fā)現(xiàn)給成員變量寫(xiě)getter和setter方法是比較麻煩的曹动,所以有了屬性的出現(xiàn)
#3.屬性做了什么:
屬性自動(dòng)添加了setter和getter方法斋日,并且自動(dòng)生成了一個(gè)成員變量(前提是沒(méi)有對(duì)應(yīng)的成員變量)
#4. @synthesize的作用
給屬性自動(dòng)生成的_xxx 重新命名
例如:
@interface ViewController ()
@property (nonatomic , copy) NSString *name;
@end
@implementation ViewController
//給相應(yīng)地成員變量改名
@synthesize name = myName;
- (void)viewDidLoad {
[super viewDidLoad];
myName = @"屬性創(chuàng)建時(shí)自動(dòng)生成了一個(gè)成員變量";
NSLog(@"%@",myName);
}
#5. 在@protocol 和 category 中如何使用 @property
可以使用
Pragma Mark — NO.6 [cell addSubview:]和 [cell.contentView addSubview:]方法的區(qū)別
Pragma Mark — NO.7 服務(wù)器返回json數(shù)據(jù)和OC比對(duì)
JSON OC
大括號(hào){} NSDictionary
中括號(hào)[] NSArray
雙引號(hào)”” NSString
數(shù)字 NSNumber
Pragma Mark — NO.8 開(kāi)發(fā)者賬號(hào)分類(lèi)
#個(gè)人的 99$
申請(qǐng)簡(jiǎn)單,付錢(qián)就好墓陈, 688¥
#企業(yè)的 99$
申請(qǐng)復(fù)雜恶守,需要”鄧白氏”認(rèn)證,可以確認(rèn)企業(yè)是合法有效的
可以管理團(tuán)隊(duì)開(kāi)發(fā)
#商業(yè)的 299$
也需要鄧白氏認(rèn)證贡必,開(kāi)發(fā)的應(yīng)用不能上架兔港,(不通過(guò)蘋(píng)果審核)專(zhuān)給企業(yè)級(jí)用戶(hù)定制應(yīng)用
Pragma Mark — NO.9 Core Foundation 和 Foundation 橋接注意事項(xiàng)
1.有幾種橋接方式—三種
1.1 CF 轉(zhuǎn)化為 Foundation — 這種方法只是讓Foundation框架暫時(shí)使用 CF 框架對(duì)象,所以需要釋放內(nèi)存仔拟, 注意2里面
CFStringRef firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty);
NSString *firstNameStr = (__bridge NSString *)(firstName);
1.2 CF 轉(zhuǎn)化為 Foundation — CF 框架移交對(duì)象的管理權(quán)給Foundation框架衫樊,不用管內(nèi)存問(wèn)題
NSString *Label = (__bridge_transfer NSString *)ABMultiValueCopyLabelAtIndex(phoneNumbers, i);
# CFBridgingRelease 等價(jià)于 (__bridge_transfer type)
1.3 Foundation 轉(zhuǎn)化為 CF — 了解,不怎么用
(__bridge_retained CF type)expression)
2.注意內(nèi)存釋放
CFRelease(phoneNumbers);
Pragma Mark — NO.10 KVC簡(jiǎn)要底層原理
# setValue:forKey方法--底層機(jī)制
1.程序優(yōu)先會(huì)考慮調(diào)用:setName:屬性(set方法)代碼通過(guò)setter方法完成設(shè)置
2.如果該類(lèi)沒(méi)有setter方法,KVC會(huì)搜索該類(lèi)名為_(kāi)name的成員變量,無(wú)論該成員變量是在類(lèi)接口部分還是實(shí)現(xiàn)部分定義,也無(wú)論是采用哪個(gè)訪問(wèn)控制符修飾科侈,這條KVC代碼底層實(shí)際是對(duì)這個(gè)_name的成員變量賦值
3.如果以上兩個(gè)都沒(méi)有载佳,那么KVC會(huì)搜索該類(lèi)名為name的成員變量,底層實(shí)際就是對(duì)這個(gè)name成員變量賦值
4.如果以上都沒(méi)找到臀栈,會(huì)調(diào)用setValue:forUndefinedKey:方法
#valueforKey方法
1.同上蔫慧,只是調(diào)用的是getter方法的返回值
2.同上
3.同上
4.同上
Pragma Mark — NO.11 到底什么是多態(tài)
Objective-C 指針類(lèi)型的變量有兩個(gè):一個(gè)是編譯時(shí)的類(lèi)型,一個(gè)是運(yùn)行時(shí)的類(lèi)型
編譯時(shí)的類(lèi)型由聲明該變量時(shí)使用的類(lèi)型決定的
運(yùn)行時(shí)的類(lèi)型由實(shí)際賦給該變量的對(duì)象決定
如果編譯時(shí)類(lèi)型和運(yùn)行時(shí)類(lèi)型不一致权薯,就可能出現(xiàn)所謂的多態(tài)
Pragma Mark — NO.12 UIScrollView—ContentSize/contentOffest/contentInsert
Snip20170217_18.png
Pragma Mark — NO.13 LLDB調(diào)試按鈕
Snip20170220_1.png