真机相关iOS开发代码段开发技能

iOS笔记-一些零散的知识点

2016-04-07  本文已影响684人  Developer_Yancy

info.plist文件

PCH文件

pch作用:

// 程序在调试阶段的时候才需要打印
// ...表示宏里面的可变参数
// __VA_ARGS__表示函数里面的可变参数

#ifdef DEBUG // 表示当前调试阶段

#define CYXLog(...)   NSLog(__VA_ARGS__)

#else // 发布阶段

#define CYXLog(...)

#endif

所有的OC文件都会定义__OBJC__这个宏,苹果官方定义

#ifdef __OBJC__

// 放OC

#endif
// 判断系统的版本号
#define iOS8  ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0)
#define iPhone5 ([UIScreen mainScreen].bounds.size.height == 568)

UIApplication

#import "Person.h"
// 1.程序一启动的时候就创建这个类的对象
// 2.不允许外界通过alloc分配内存,只要一调用,马上抛异常

@implementation Person

// 人的实例
static Person *_instance;

// 程序运行的时候就会加载类
+ (void)load
{
    _instance = [[self alloc] init];
}
// exception 'NSInternalInconsistencyException', reason: 'There can only be one UIApplication instance.'
+ (instancetype)alloc
{
    if (_instance) {
        // 崩溃
        // 创建异常对象
        NSException *excption = [NSException exceptionWithName:@"NSInternalInconsistencyException" reason:@"There can only be one Person instance." userInfo:nil];
        // 抛异常
        [excption raise];
    }
    // super -> [NSObject alloc]
    return [super alloc];
}
+ (instancetype)sharedPerson
{
    return _instance;
}
@end

UIApplicationDelegate

// 应用程序的生命周期
// 应用程序启动完成的时候调用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    return YES;
}

// 当我们应用程序即将失去焦点的时候调用
- (void)applicationWillResignActive:(UIApplication *)application {
}

// 当我们应用程序完全进入后台的时候调用
- (void)applicationDidEnterBackground:(UIApplication *)application{
}

// 当我们应用程序即将进入前台的时候调用
- (void)applicationWillEnterForeground:(UIApplication *)application {

// 当我们应用程序完全获取焦点的时候调用
// 只有当一个应用程序完全获取到焦点,才能与用户交互.
- (void)applicationDidBecomeActive:(UIApplication *)application {
}

// 当我们应用程序即将关闭的时候调用
- (void)applicationWillTerminate:(UIApplication *)application {
}

@end

程序启动原理


int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

UIWindow

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 窗口显示的注意点:
    // 1.一定要强引用
    // 2.控件要想显示出来,必须要有尺寸

    // 1.创建窗口
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

    // 2.创建根控制器,在设置窗口的根控制器
    UIViewController *vc = [[UIViewController alloc] init];

    // 设置窗口的根控制器,底层会自动把根控制器的view添加到窗口上,并且让控制器的view有旋转功能
    self.window.rootViewController = vc;

    // 3.显示窗口
    // makeKeyAndVisible:让窗口成为应用程序的主窗口,并且显示窗口
    [self.window makeKeyAndVisible];

    return YES;
}
上一篇 下一篇

猜你喜欢

热点阅读