一、我們?nèi)绾伍_始建立一個iOS的工程
我們會在應(yīng)用程序中打開1處(俗稱xcode)丝格,我們會開始在這里寫代碼唠梨;
在2處雙擊就會開始創(chuàng)建一個項目算芯;
等項目在mac電腦中run起來后柒昏,會在3處(俗稱simulator)向手機一樣展示應(yīng)用。
第4處是產(chǎn)品名稱熙揍,一般都是應(yīng)用在手機上展示的名稱职祷,建立后項目是可以修改展示的名稱;
第5處是蘋果賬號的開發(fā)團隊的id届囚,這個需要有蘋果賬號的人員把你加入團隊中才能選中堪旧,建立項目后也是可以修改的;
第6處是選擇的語言設(shè)置奖亚,目前僅支持Objective-C和Swift兩種語言淳梦,這里我們選中Objective-C語言。
至此我們就創(chuàng)建好一個空白的項目了昔字。
二爆袍、項目的配置
a、添加.gitignore
一般我們的項目都用git管理代碼庫作郭,我們在改動一些代碼或者配置的時候只希望改變相關(guān)的東西陨囊,至于其它的文件并不希望被改動提交到遠程倉庫中,這時候我們就希望添加.gitignore文件忽略某些不相關(guān)文件的改變夹攒。
.gitignore文件內(nèi)容如下:可以根據(jù)自己的需要在網(wǎng)上自己尋找
# atom .gitignore
# Xcode
Products/
.DS_Store
build/
Build/ # ignore Build folder
Index/
*.pbxuser # ignore all *.pbxuser
!default.pbxuser # except default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
# *.xcworkspace
!default.xcworkspace
xcuserdata
profile
*.moved-aside
DerivedData
.idea/
Pods/
Podfile.lock
/Podfile.lock
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://github.com/github/gitignore/blob/master/Objective-C.gitignore
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
# And most people choose to check in the Pods/ directory:
# https://stackoverflow.com/questions/9446644/what-goes-into-your-gitignore-if-youre-using-cocoapods
#
# Pods
# Podfile.lock
# handle existed project using following command
# git rm --cached `git ls-files -i --exclude-from=.gitignore`
Pods/resources-to-copy-jiaxiaozhijia-ios.txt
__XCodes
linkmap/linkmap.txt
b蜘醋、添加cocoapods包管理
我們要引進第三方的功能時,我們可以把文件拷貝進來咏尝,但這樣會要我們手動刪除添加文件并且配置一些系統(tǒng)的庫文件压语,如果第三方庫多并且改動頻繁的時候,我們可能就會感覺很疲累编检。
這時我們就可以引進cocoapods胎食,在項目的根目錄下添加Podfile文件
#支持的系統(tǒng)平臺
platform :ios, '9.0'
#第三方庫的來源
source 'https://github.com/CocoaPods/Specs.git'
#'Test'項目名稱
target 'Test' do
project 'Test.xcodeproj'
#第三方庫的名稱,版本號允懂, 是否忽略第三方庫的警告
pod 'AFNetworking', '~> 4.0.1', :inhibit_warnings => true
end
在目錄下執(zhí)行"pod(mac 系統(tǒng)自帶的) install"厕怜,等好了我們就可以引用AFNetworking的頭文件了
項目文件結(jié)構(gòu)如上:
7處是.gitignore文件
8處是添加cocospods生成的文件,點擊Test.xcworkspace就能跑起代碼
9處是干凈的項目運行起來的蕾总,添加完cocospods文件后不能點擊跑起代碼粥航,因為里面沒有帶上第三方庫代碼會編譯報錯的
三、代碼文件結(jié)構(gòu)
10處是我們run起項目
11處是選擇哪種模擬器
12處是查看整個文件
13處是全局搜索
14處是編譯報錯時查看
15處是查看斷點
16處是我們開始寫代碼的文件
17處是cocoapods導(dǎo)入的第三方文件生百,不需要我們管理
main.m文件是我們整個項目運行的入口處递雀,但我們一般不會對它進行代碼編輯
我們直接run起項目,不進行任何代碼編輯置侍,則項目是運行起ViewController視圖文件映之,把它當做root視圖
ViewController.h文件是暴露給其它文件調(diào)用的方法
ViewController.m是自己執(zhí)行的代碼邏輯的文件
在iOS13之后我們可以在SceneDelegate.m文件中創(chuàng)建自己的root視圖,而在這之前是在AppDelegate.m文件創(chuàng)建root視圖
四代碼風(fēng)格
#import <UIKit/UIKit.h> "<>"包含的是系統(tǒng)或者是第三方的庫文件
#import "AppDelegate.h" " "" "包含的是自己開發(fā)的庫文件
//繼承UIResponder蜡坊,遵守UIApplicationDelegate協(xié)議
@interface AppDelegate : UIResponder <UIApplicationDelegate>
//@interface @end中聲明一個類的方法或者屬性
//assign基本表示基本屬性杠输,不能聲明對象,因為在對象引用機制為0時不會銷毀對象秕衙,造成內(nèi)存泄漏蠢甲,形成野指針
@property (nonatomic, assign) NSInteger age;
//copy表示淺拷貝,只拷貝內(nèi)容据忘,不拷貝指針鹦牛,不隨著拷貝的內(nèi)容改變而改變
@property (nonatomic, copy) NSString *name;
//strong表示深拷貝,既拷貝內(nèi)容勇吊,又拷貝指針曼追,隨著拷貝的內(nèi)容改變而改變
@property (nonatomic, strong) NSArray *array;
//實例方法,需要name和age兩個參數(shù)
- (void)speakWithName:(NSString *)name age:(NSInteger)age;
//類方法汉规,返回一個字符串
+ (NSString *)returnSetting;
@end
@implementation AppDelegate
//@implementation @end中實現(xiàn)方法或者使用屬性
- (void)speakWithName:(NSString *)name age:(NSInteger)age {
NSLog(@"打永袷狻:%@", [AppDelegate returnSetting]);
NSLog(@"我是%@, 今年%ld", name, age);
}
+ (NSString *)returnSetting {
return @"我是實例方法";
}
//未聲明的方法,只能內(nèi)部調(diào)用针史,外面的文件不能使用
- (void)initialInstance {
//初始一個實例對象
AppDelegate *p = [[AppDelegate alloc] init];
[p speakWithName:@"appdelegate" age:12];
}
@end