『壹』 iOS 源碼探索的三種方式
iOS 開發探索源碼的方法有三種:符號斷點直接跟流程;control + step into;匯編跟流程。下面根據圖文的形式介紹這三種方式
首先我們在 ViewController 的 viewDidLoad 方法中下個斷點
運行項目,此時會在我們打的斷點處停留,此時,選擇符號斷點
輸入要查找的方法名,enter 符號斷點已生效
之所以在 viewDidLoad 的斷點到來之後再打 alloc 的符號斷點,因為 alloc 的調用很多,如果運行前開啟不能精準的定位是不是 Person 的 alloc 方法。點擊進入下一步
alloc 符號斷點斷住的堆棧調用情況,從下圖可以看出 alloc 的源碼位於libobjc.A.dylib庫
運行項目,此時會在我們打的斷點處停留,按住 control 鍵,點擊 step into
進去後,顯示
此時打開符號斷點,輸入 objc_alloc
點擊 enter,符號斷點就會顯示 objc_alloc 所在的源碼庫
運行項目,此時會在我們打的斷點處停留,工具欄選擇 Debug --> Debug Workflow --> Always Show Disassembly,通過匯編跟流程
此時會跳轉到匯編,顯示如下
按住 control 鍵, 點擊 step into 鍵,執行,之後看到斷點在 objc_alloc 處
同樣通過 objc_alloc 的符號斷點,得到源碼所在庫
『貳』 超好玩魔盒ios源代碼
其實魔盒的源代碼還是挺簡單的,如下就是全部代碼:
php"><?php
require'./libs/Smarty.class.php';
$smarty=newSmarty();
$smarty->assign('title','博客正文');
if(!isset($_GET["blogid"])||!is_numeric($_GET["blogid"]))
{
$smarty->assign('info','您所查看的文章不存在或已經被刪除。');
$smarty->display('wrong.html');
exit();
}
$blogid=$_GET["blogid"];
$mysqli=newmysqli("localhost","root","","herblog");
$sql="selectid,datecreate,readcnt,commentcnt,title,blogfromblogwhereid='".$blogid."'";
$rst=$mysqli->query($sql);
if(!$rst)
{
//數據查詢出錯
$smarty->assign('info','伺服器忙,請稍後重試');
$smarty->display('wrong.html');
$mysqli->close();
exit();
}
if($row=$rst->fetch_array())
{
$smarty->assign('blog',array(
'id'=>$row[0],
'date'=>$row[1],
'readcnt'=>$row[2],
'commentcnt'=>$row[3],
'title'=>$row[4],
'blog'=>$row[5],
));
$hasComment=0;
$sql="select`id`,`date`,`ip`,`user`,`text`fromcommentwhere`blogid`='".$blogid."'";
$rst=$mysqli->query($sql);
if($rst)
{
$comments=array();
while($row=$rst->fetch_array())
{
$comments[]=array(
'date'=>$row[1],
'user'=>$row[3],
'text'=>$row[4]
);
$hasComment++;
}
$smarty->assign('comments',$comments);
}
$smarty->assign('hasComment',$hasComment);
$smarty->display('blog.html');
}
else
{
$smarty->assign('info','您所查看的文章不存在或已經被刪除。');
$smarty->display('wrong.html');
}
if($rst)
{
$rst->free();
}
$mysqli->close();
?>
『叄』 GitHub 上有哪些完整的 iOS-App 源碼值得參考
1. Coding iOS 客戶端
Coding官方客戶端. 筆者強烈推薦的值得學習的完整APP.
GitHub - Coding/Coding-iOS: Coding iOS 客戶端源代碼
2. OSCHINA 的 iPhone 客戶端
開源中國的iPhone客戶端源碼
https://git.oschina.net/oschina/iphone-app
3. Git@OSC
Git@OSC iPhone 客戶端,方便用戶查看Git@OSC的項目以及簡單的操作issue等
oschina / git-osc-iphone
4. Firefox for iOS
GitHub - mozilla/firefox-ios: Firefox for iOS
5. zulip-ios
Dropbox收購公司內部社交服務商Zulip,然後全部開源,這是iOS App
GitHub - zulip/zulip-ios: Zulip iOS app
6. iOSSF
SegmentFault官方App
GitHub - gaosboy/iOSSF: SegmentFault官方App
7. iReddit
Reddit iPhone客戶端
GitHub - reddit/iReddit: The iReddit iPhone app
8. Monkey
GitHub第三方iOS客戶端
GitHub - coderyi/Monkey: Monkey is a GitHub third party client for iOS,to show the rank of coders and repositories.
9. Watch
Dribbble第三方客戶端
GitHub - tuesda/Watch: A project which demonstrate how to develop a custom client on android for dribbble.com
10. Voice2Note
懶人筆記iOS客戶端
GitHub - liaojinxing/Voice2Note: 懶人筆記iOS客戶端
11. RSSRead
「已閱」(iOS上開源RSS新聞閱讀器)
GitHub - ming1016/RSSRead: 「已閱」(iOS上開源RSS新聞閱讀器),有興趣?那就Pull Requests吧
12. BeeFancy
BeeFancy仿Fancy官方APP的WIREFRAME,基於BeeFramework
GitHub - BeeFramework/BeeFancy: 仿Fancy官方APP的WIREFRAME,基於BeeFramework
13. SXNews
模仿網易新聞做的精仿網易新聞
GitHub - dsxNiubility/SXNews: High imitation Neteasy News. (include list,detail,photoset,weather,feedback)
14. Doppio
尋找最近的星巴克
GitHub - chroman/Doppio: An open source iOS app to find the nearest Starbucks store using NSURLSession, AFNetworking 2.0, Mantle and Starbucks private API.
15. Anypic
類似於Instagram的一款App
GitHub - ParsePlatform/Anypic: An open source mobile and web app that lets users share photos similar to Instagram
16. 豆瓣相冊
Slowslab iOS應用 豆瓣相冊 精選集 開源項目
GitHub - TonnyTao/DoubanAlbum: Slowslab iOS應用 豆瓣相冊 精選集 開源項目,僅供學習參考
17. ChatSecure-iOS
Objective-C寫的XMPP聊天應用
GitHub - ChatSecure/ChatSecure-iOS: ChatSecure is a free and open source encrypted chat client for iPhone and Android that supports OTR encryption over XMPP.
18. NotificationChat
Objective-C寫的完整的聊天應用
GitHub - relatedcode/EncryptedChat: This is a full native iPhone app to create realtime, text based group or private chat with Parse and Firebase.
19. FakeZhihuDaily
仿知乎日報iOS客戶端
GitHub - gnou/FakeZhihuDaily: 仿知乎日報iOS客戶端
20. ruby-china-for-ios
RubyChina官方客戶端
GitHub - ruby-china/ruby-china-for-ios: Ruby China client for iOS
21. Meizi
豆瓣妹子圖iOS客戶端
GitHub - Sunnyyoung/Meizi: 豆瓣妹子圖iOS客戶端
22. PlainReader
一款 iOS(iPhone + iPad) 新聞類客戶端,內容抓取自http://cnBeta.com
PlainReader/PlainReader at master · guojiubo/PlainReader · GitHub
23. iOS-2048
用Objective-C實現的2048游戲
GitHub - austinzheng/iOS-2048: iOS drop-in library presenting a 2048-style game
24. ECMobile_iOS
基於ECShop的手機商城客戶端
GitHub - GeekZooStudio/ECMobile_iOS: 基於ECShop的手機商城客戶端
25. wikipedia-ios
維基網路官方App, 已上架
GitHub - wikimedia/wikipedia-ios: The official Wikipedia iOS app.
26. Sol
漂亮的扁平風格的天氣App
GitHub - comyarzaheri/Sol: Sol° beautifully displays weather information so you can plan your day accordingly. Check the weather in your current location or any city around the world. Implemented in Objective-C.
『肆』 怎麼試運行iOS軟體的源代碼
分析一款ios應用的源代碼方法如下:
1、首先提取整個應用文件的二進制代碼,建立for循環將機器所有字元串進行排列組合並標記後編譯。
2、再建立for將應用文件二進制代碼同所有的字元串排列組合編譯成的二進制文件進行對比。
3、最後通過標記就能找到應用的源代碼。
『伍』 ios源代碼幾個人寫的
1個人。iOS系統實際上更多的是出自斯科特佛斯特之手,源代碼是一個人編寫的。但是這個人非常低調,如果說喬布斯讓蘋果達到了巔峰,開創了智能手機的新時代。所謂源代碼,就是一系列可以創建出軟體讓iPhone得以運行的編程代碼。