安装Xcode
如果你的系统版本比较老,可以选择到官网下戴老的版本下载链接。如我的版本是10.13.6,则对应Xcode10.1
下载这个.xip文件并拷贝到Application/文件夹下,解压,然后就可以安装了。
创建App
依次选择:Single View App => Project Name: MyProject + Language: Object-C + Use Core Data,Core Data,是一个苹果的数据存储框架,采用对象关系映射的存储关系,支持OC对象和数据库数据的互转。
目录分析
如果上图
- Products: 主要用于mac电脑开发,IOS开发用不到。
–AppDelegate:初始化操作
–ViewController:视图控制器
–Main.storyboard:直观看ui
–Assets.xcassets:主要用于存放资源文件
–Info.plist:项目的配置文件,如mainStoryBorad未必是主页面,这里可配置 - MyProjectTests: 用于单元测试。
- MyProjectUITests: 用于UI测试。
- MyProject: IOS开发的内容主要都是存放在这个文件夹中
初始化项目文件代码解读
AppDelegate.h
// 尖括号用于引入系统库,可以认为是一个操作界面的库(https://blog.youkuaiyun.com/u011774517/article/details/64125115)
#import <UIKit/UIKit.h>
/* AppDeletegate 继承自UIResponder,并且它遵守UIApplicationDelegate协议,https://www.jianshu.com/p/4cc018a85ca4
调用UIResponder来处理事件,UIApplication会强制定制启动终止事件
*/
@interface AppDelegate : UIResponder <UIApplicationDelegate>
// @propery会给属性自动设置settter和gettter和下划线属性名_window;括号内是属性:Atomicity原子性(atomic,noatomic),Storage(strong,weak,assign, copy)
@property (strong, nonatomic) UIWindow *window;
// Core Data数据存储相关
@property (readonly, strong) NSPersistentContainer *persistentContainer;
// UIViewController
@property (strong, nonatomic) ViewController *viewController;
- (void)saveContext;
@end
AppDelegate.m
#import "AppDelegate.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
// 应用加载完时触发
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
return YES;
}
// 应用将要挂入后台时触发,可以用此方法来中断游戏
- (void)applicationWillResignActive:(UIApplication *)application {
}
// 用户退出时调用
- (void)applicationDidEnterBackground:(UIApplication *)application {
}
// app将进入前台
- (void)applicationWillEnterForeground:(UIApplication *)application {
}
// 进入前台时机,你可以重启某些东西
- (void)applicationDidBecomeActive:(UIApplication *)application {
}
// 程序关闭时触发,可以保存一些数据
- (void)applicationWillTerminate:(UIApplication *)application {
}
@end
ViewController.h
#import <UIKit/UIKit.h>
/**
UIViewController是连接视图和model的桥梁,以下是其生命周期
initialize:类初始化
init: 实例初始化
aDecoder: 从归档初始化
loadView: 加载视图
viewDidLoad:将要加载视图
viewWillLayoutSubviews: 将要面局子视图
viewWillAppear:视图将要出现
viewDidAppear:视图已出现
viewWillDisappear:视图将要消失
viewDidDisappear:视图已经消失
*/
@interface ViewController : UIViewController
@end
Info.plist
1、Localization native development region —> 本地化相关数据
2、Executable file —> 程序安装包的名称
3、InfoDictionary version info.list的版本信息
4、Bundle indentifier,唯一标识字符串,模拟器上没用,发布App则有用
5、Bundle name 程序安装后显示的名称
6、Bundle version,软件、内部项目管理的版本号
7、Bundle versions string, short,用于itunes上显示的版本号
8、Launch screen interface file base name是SB的名称
9、Main storyboard file base name,主程序的名称
10、Supported interface orientations,支持屏幕旋转,有三种控制屏幕旋转方向的方法,具体可查
main.m
// UI库吧,控制
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
// 自动释放池
@autoreleasepool {
// 参考这篇文章,https://blog.youkuaiyun.com/LVXIANGAN/article/details/19076911
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
加我微信,入ios开发高级交流群
备注:ios开发者