目錄
1.如果NSMutableArray用copy修飾可以不可以?
2.KVC 與 KVO 使用理解
3.委托和代理一樣嗎?
4.野指針與空指針?
5.抽象工廠模式在 Cocoa SDK 中哪些類中體現(xiàn)?
6.友盟統(tǒng)計埋點
7.基礎屬性修飾
8.frame和bounds的區(qū)別,frame的寬?高在什么情況下和bound的寬?高不?一樣?
9.ARC和MRC的內(nèi)存管理?方式本質(zhì)上區(qū)別?為什么?
10.layoutSubviews在哪些情況下會被調(diào)用?
11.NSThread中的Runloop的作用,如何使用?
12.簡述類?目優(yōu)點和缺點,如果覆蓋本類或者?父類的?方法,會出現(xiàn)什么問題?
13.為什么要?用-all_load&-ObjC?
14.runtime如何通過selector找到對應的IMP地址?(分別考慮類?方法和實例?方法)
15.一個Objective-C對象如何進?行內(nèi)存布局?
16.當前視圖有5頁數(shù)據(jù),瀏覽到第三頁,點擊詳情跳轉(zhuǎn)過去,回來怎么繼續(xù)停留在第三頁,若請求數(shù)據(jù)?
17.@synthesize和@dynamic分別有什么作用?
18.用@property聲明的NSString(或NSArray,NSDictionary)經(jīng)常使用copy關鍵字,為什么?如果改用strong關鍵字,可能造成什么問題?
19.objc 使用什么機制管理對象內(nèi)存?
20.不手動指定autoreleasepool的前提下,一個autorealese對象在什么時刻釋放?(比如在一個vc的viewDidLoad中)
21.表情包素材鏈接
22.iOS學習之 plist文件的讀寫
23.用masonry動態(tài)布局的時候,如果在一個數(shù)組里面創(chuàng)建多個按鈕,一排最多3個按鈕,怎么布局,在多少個未定的情況下?(使用到Masonry哪個屬性)
24.bug之打包奔潰
25.ViewController的生命周期
26.Xcode 新建文件時頻繁崩潰
27.好用第三方推薦
28.不用寫pch文件,直接h文件效果等同pch
29.如何將自己的庫上傳到CocoaPods
30.跳轉(zhuǎn)淘寶商品詳情與淘寶店鋪(App+網(wǎng)頁)
1.如果NSMutableArray用copy修飾可以不可以?
當 copy 修飾可變類型集合(例如:NSMutableArray)時,賦值后,會導致可變類型屬性變?yōu)椴豢勺冾愋?,然后在調(diào)用可變類型方法時,會產(chǎn)生異常錯誤。產(chǎn)生異常的原因是 copy 屬性在運行時賦值時調(diào)用了 -copyWithZone:賦值,將可變類型轉(zhuǎn)換為不可變類型。
補充說明:
比如這個寫法:@property (nonatomic, copy) NSMutableArray *array; 如果使用這個 array 會閃退,因為 copy 出來的是一個不可變的數(shù)組。比如調(diào)用的時候是添加元素,那么錯誤會是數(shù)組找不到添加元素的方法,所以會閃退。





2.KVC 與 KVO 使用理解
- 1.KVC
KVC的keyPath可以是屬性、實例變量、成員變量
KVC的底層實現(xiàn)


- 2.KVO的底層原理是什么?
KVO的keyPath可以是屬性、實例變量、成員變量。KVO的底層基于 runtime 機制實現(xiàn)
3.委托和代理一樣嗎?

4.野指針與空指針?

5.抽象工廠模式在 Cocoa SDK 中哪些類中體現(xiàn)?

6.友盟統(tǒng)計埋點


7.基礎屬性修飾


8.frame和bounds的區(qū)別,frame的寬?高在什么情況下和bound的寬?高不?一樣?
frame:當前界面元素在其父界面元素中的位置和大 小
bounds:當前界面元素在其自身坐標系統(tǒng)中的位置和 大小
9.ARC和MRC的內(nèi)存管理?方式本質(zhì)上區(qū)別?為什么?
10.layoutSubviews在哪些情況下會被調(diào)用?
11.NSThread中的Runloop的作用,如何使用?
12.簡述類?目優(yōu)點和缺點,如果覆蓋本類或者?父類的?方法,會出現(xiàn)什么問題?
1.類目優(yōu)點不需要通過增加子類而增加現(xiàn)有類的行為 (方法),且類目中的方法與原始類方法基本沒有區(qū)別;
2.通過類目可以將龐大一個類的方法進行劃分,從而便 于代碼的日后的維護、更新以及提高代碼的閱讀性;
3.缺點無法向類目添加實例變量,如果需要添加實例變 量,只能通過定義子類的方式;如果覆蓋父類的方法,可 能導致 super 消息的斷裂。因此,最好不要覆蓋原始類 中的方法。
13.為什么要?用-all_load&-ObjC?
14.runtime如何通過selector找到對應的IMP地址?(分別考慮類?方法和實例?方法)
15.一個Objective-C對象如何進?行內(nèi)存布局?
16.當前視圖有5頁數(shù)據(jù),瀏覽到第三頁,點擊詳情跳轉(zhuǎn)過去,回來怎么繼續(xù)停留在第三頁,若請求數(shù)據(jù)?
你只要不在viewWillAppear里面刷新視圖和請求數(shù)據(jù)。那你返回上一個頁面是不會刷新的呀
17.@synthesize和@dynamic分別有什么作用?

18.用@property聲明的NSString(或NSArray,NSDictionary)經(jīng)常使用copy關鍵字,為什么?如果改用strong關鍵字,可能造成什么問題?
https://blog.csdn.net/weixin_33725515/article/details/88027657
19.objc 使用什么機制管理對象內(nèi)存?
用的是引用計數(shù)的機制。通過 retainCount 的機制來決定對象是否需要釋放。每次 run loop 的時候,都會檢查對象的 retainCount,如果 retainCount 為 0,說明該對象沒有地方需要繼續(xù)使用了,可以釋放掉了。
20.不手動指定autoreleasepool的前提下,一個autorealese對象在什么時刻釋放?(比如在一個vc的viewDidLoad中)
不手動指定 autoreleasepool 的前提下 ,autorealese 在一個 runloop 周期結(jié)束后進行內(nèi)存釋放,在收到內(nèi)存警告時也會就行內(nèi)存釋放。
http://www.itdecent.cn/p/e69e303ba1b4
- 補充:對象是什么時候被release的?
引用計數(shù)為0時被release。autorelease實際上只是把對release的調(diào)用延遲了,對于每一個Autorelease,系統(tǒng)只是把該Object放入了當前的 Autorelease pool中,當該pool被釋放時,該pool中的所有Object會被調(diào)用Release。對于每一個Runloop, 系統(tǒng)會隱式創(chuàng)建一個Autorelease pool,這樣所有的release pool會構(gòu)成一個象CallStack一樣的一個棧式結(jié)構(gòu),在每一個Runloop結(jié)束時,當前棧頂?shù)腁utorelease pool會被銷毀,這樣這個pool里的每個Object(就是autorelease的對象)會被release。那什么是一個Runloop呢? 一個UI事件,Timer call, delegate call, 都會是一個新的Runloop
21.表情包素材鏈接
https://www.easyicon.net/iconsearch/%E8%A1%A8%E6%83%85%E5%8C%85%E3%80%81/3/?m=yes&f=_all&s=
http://aspx.sc.chinaz.com/query.aspx?keyword=%E5%9B%BE%E6%A0%87&issale=&classID=49&page=161
- 補充:十分鐘開發(fā)一款 iOS 表情包 App(https://juejin.im/post/5a32130bf265da43176a281f)
22.iOS學習之 plist文件的讀寫
https://blog.csdn.net/totogo2010/article/details/7634185
23.用masonry動態(tài)布局的時候,如果在一個數(shù)組里面創(chuàng)建多個按鈕,一排最多3個按鈕,怎么布局,在多少個未定的情況下?(使用到Masonry哪個屬性)
http://www.cocoachina.com/articles/22551
24.bug之打包奔潰
場景:一開始系統(tǒng)選擇13.5的進行pod操作,在選擇9.0進行上傳打包的時候報錯。解決方法就是再重新選擇9.0pod一遍,即可在9.0的時候進行上傳打包
25.ViewController的生命周期

26.Xcode 新建文件時頻繁崩潰
https://blog.csdn.net/qq_30513483/article/details/52098628
http://www.itdecent.cn/p/55eb97ed5b83
27.好用第三方推薦
- IGListKit 框架
Instagram在2016年年底發(fā)布了基于數(shù)據(jù)驅(qū)動的UICollectionView框架IGListKit。使用數(shù)據(jù)驅(qū)動去創(chuàng)造更為快速靈活的列表控件。以下是該框架的特點:
1.數(shù)據(jù)驅(qū)動(數(shù)據(jù)改變 -> Diff算法 -> update界面)
2.可重復單元和組件的更好體系結(jié)構(gòu)
3.解耦的差異算法
4.可以為數(shù)據(jù)模型自定義差異算法
5.可擴展的APIhttp://www.itdecent.cn/p/3517619085f7
用此實現(xiàn)朋友圈:http://www.itdecent.cn/p/d52fe7059d92
- 內(nèi)存泄漏檢測:pod 'FBRetainCycleDetector', :configurations => ['Debug']
- 內(nèi)存溢出:pod 'MLeaksFinder'
- 個人常用iOS第三方庫以及XCode插件介紹:http://www.cocoachina.com/articles/12503
28.不用寫pch文件,直接h文件效果等同pch

29.如何將自己的庫上傳到CocoaPods
http://www.itdecent.cn/p/3a8f7a1569bc
30.跳轉(zhuǎn)淘寶商品詳情與淘寶店鋪(App+網(wǎng)頁)
場景:有的需求會是一個H5鏈接,在H5鏈接里面有按鈕可以交互跳轉(zhuǎn)淘寶商品詳情和淘寶店鋪,根據(jù)詳情id和店鋪shop_id來跳轉(zhuǎn)。在用戶是否安裝了淘寶App的判斷上分為跳轉(zhuǎn)淘寶App與跳轉(zhuǎn)網(wǎng)頁淘寶,商品詳情和店鋪的id可以打開淘寶分別獲取他們的地址,在地址里面便可以看到對應的id的值,進而拿來測試,舉例如下圖。
相關鏈接:
https://blog.csdn.net/u014798232/article/details/79734354
http://www.vephp.com/jiaocheng/14660.html




1.// 淘寶商品詳情頁
NSURL *taobaoUrl = [NSURL URLWithString:[NSString stringWithFormat:@"taobao://item.taobao.com/item.htm?id=%@", detailId]];//id=61377079480
NSString *strWebUrl = [NSString stringWithFormat:@"https://item.taobao.com/item.htm?id=%@",detailId];
NSURL *webUrl = kUrl(strWebUrl);
if ([[UIApplication sharedApplication] canOpenURL:taobaoUrl]) {// 能打開淘寶就打開淘寶
[[UIApplication sharedApplication] openURL:taobaoUrl];
} else {// 瀏覽器中打開
[[UIApplication sharedApplication] openURL:webUrl];
}
2.// 淘寶店鋪
NSURL *taobaoUrl = [NSURL URLWithString:[NSString stringWithFormat:@"taobao://shop.m.taobao.com/shop/shop_index.htm?shop_id=%@",detailId]];//shopId=59369908
NSString *strWebUrl = [NSString stringWithFormat:@"https://shop.m.taobao.com/shop/shop_index.htm?shop_id=%@",detailId];
NSURL *webUrl = kUrl(strWebUrl);
if ([[UIApplication sharedApplication] canOpenURL:taobaoUrl]) {
[[UIApplication sharedApplication] openURL:taobaoUrl];
} else {
[[UIApplication sharedApplication] openURL:webUrl];
}
