1、iOS app执行工做过程app
大部分工做都是由UIApplicationMain函数完成;框架
UIApplicationMain函数由UIKit框架提供(UIKit框架提供应用程序构建、管理用户界面所须要的所有类);函数
在源文件main.m中自动调用;ip
UIKit框架只是Cocoa Touch提供的众多框架中的一个;资源
Cocoa Touch是全部iOS应用程序的应用环境;编译器
调用UIAppilcationMain扫描应用程序中的Info.plist文件,Info,plist是键值对结构化列表;it
2、Objective-C语言基本语法io
OC是C语言的超集,支持与C相同的基本语法; 编译
eg.1. @interface MyClass(类名称) : NSObject*(父类名称)class
{
int count;
id data;
NSString* name;
}(成员变量)
- (id)initWithString:(NSString*)aName;(实例的方法声明)
+(MyClass*)createMyClassWithString:(NSString*)aName;(类的方法声明)
@end
eg.2. -(void)insertObject:(id)anObject atIndex:(NSUInteger)index
语句说明:
- : 方法类型标识符(+为类,-为实例);
void : 返回类型;
insertObject:, atIndex: :方法签名关键词;
id,NSUInteger : 参数类型;
anObject,index : 参数名;
eg.3. block:可移植的匿名函数,可用做回调。
int multiplier = 7;
int (^myBlock)(int) = ^(int num){ return num * multiplier; };
语句说明:
第一个int : myBlock是一个块,会返回int值;
第二个int : block采用一个参数,也是int类型;
^myBlock :'^'将变量myBlock声明为一个块;
^(){} : 一个字面常量块定义,分配给变量myBlock;
num : 参数名;
return num * multiplier; : 块的主体部分;
eg.4. 协议
@inteface HelloWorldViewController : UIViewController <UITextFieldDelegate>
@end
遵照了<UITextFieldDelegate>协议
eg.5 #import
预处理指令;
#import由#include衍生来,是#include的改良版,#import能够保证一个头文件不被屡次包含;
#import和@class:
#import包含这个类的全部信息,包括实体变量和方法;@class只告诉编译器,后面声明的名称是类的名称,并不考虑类如何定义等;
#import用于实现类里面,@class用于头文件;通常@class是放在interface中;
#import相对于@class更加耗费资源;
#import使文件之间有依赖关系,@class不须要文件之间的依赖;