一、我们如何开始建立一个iOS的工程
我们会在应用程序中打开1处(俗称xcode),我们会开始在这里写代码;
在2处双击就会开始创建一个项目;
等项目在mac电脑中run起来后,会在3处(俗称simulator)向手机一样展示应用。
第4处是产品名称,一般都是应用在手机上展示的名称,建立后项目是可以修改展示的名称;
第5处是苹果账号的开发团队的id,这个需要有苹果账号的人员把你加入团队中才能选中,建立项目后也是可以修改的;
第6处是选择的语言设置,目前仅支持Objective-C和Swift两种语言,这里我们选中Objective-C语言。
至此我们就创建好一个空白的项目了。
二、项目的配置
a、添加.gitignore
一般我们的项目都用git管理代码库,我们在改动一些代码或者配置的时候只希望改变相关的东西,至于其它的文件并不希望被改动提交到远程仓库中,这时候我们就希望添加.gitignore文件忽略某些不相关文件的改变。
.gitignore文件内容如下:可以根据自己的需要在网上自己寻找
# 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包管理
我们要引进第三方的功能时,我们可以把文件拷贝进来,但这样会要我们手动删除添加文件并且配置一些系统的库文件,如果第三方库多并且改动频繁的时候,我们可能就会感觉很疲累。
这时我们就可以引进cocoapods,在项目的根目录下添加Podfile文件
#支持的系统平台
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
在目录下执行"pod(mac 系统自带的) install",等好了我们就可以引用AFNetworking的头文件了
项目文件结构如上:
7处是.gitignore文件
8处是添加cocospods生成的文件,点击Test.xcworkspace就能跑起代码
9处是干净的项目运行起来的,添加完cocospods文件后不能点击跑起代码,因为里面没有带上第三方库代码会编译报错的
三、代码文件结构
10处是我们run起项目
11处是选择哪种模拟器
12处是查看整个文件
13处是全局搜索
14处是编译报错时查看
15处是查看断点
16处是我们开始写代码的文件
17处是cocoapods导入的第三方文件,不需要我们管理
main.m文件是我们整个项目运行的入口处,但我们一般不会对它进行代码编辑
我们直接run起项目,不进行任何代码编辑,则项目是运行起ViewController视图文件,把它当做root视图
ViewController.h文件是暴露给其它文件调用的方法
ViewController.m是自己执行的代码逻辑的文件
在iOS13之后我们可以在SceneDelegate.m文件中创建自己的root视图,而在这之前是在AppDelegate.m文件创建root视图
四代码风格
#import <UIKit/UIKit.h> "<>"包含的是系统或者是第三方的库文件
#import "AppDelegate.h" " "" "包含的是自己开发的库文件
//继承UIResponder,遵守UIApplicationDelegate协议
@interface AppDelegate : UIResponder <UIApplicationDelegate>
//@interface @end中声明一个类的方法或者属性
//assign基本表示基本属性,不能声明对象,因为在对象引用机制为0时不会销毁对象,造成内存泄漏,形成野指针
@property (nonatomic, assign) NSInteger age;
//copy表示浅拷贝,只拷贝内容,不拷贝指针,不随着拷贝的内容改变而改变
@property (nonatomic, copy) NSString *name;
//strong表示深拷贝,既拷贝内容,又拷贝指针,随着拷贝的内容改变而改变
@property (nonatomic, strong) NSArray *array;
//实例方法,需要name和age两个参数
- (void)speakWithName:(NSString *)name age:(NSInteger)age;
//类方法,返回一个字符串
+ (NSString *)returnSetting;
@end
@implementation AppDelegate
//@implementation @end中实现方法或者使用属性
- (void)speakWithName:(NSString *)name age:(NSInteger)age {
NSLog(@"打印:%@", [AppDelegate returnSetting]);
NSLog(@"我是%@, 今年%ld", name, age);
}
+ (NSString *)returnSetting {
return @"我是实例方法";
}
//未声明的方法,只能内部调用,外面的文件不能使用
- (void)initialInstance {
//初始一个实例对象
AppDelegate *p = [[AppDelegate alloc] init];
[p speakWithName:@"appdelegate" age:12];
}
@end