一个前端工程师的ios学习(1)

- 3 mins

学习资料存档:

  1. 着手开发ios应用程序
  2. developer
  3. cocoachina

####笔记

每个应用程序都会有一个main.m的文件。这个文件相当于程序的入口文件,其中的@autoreleasepool是自动释放池(目前只知道是用于内存管理计数),会在其中调用UIApplicationMain函数。

调用UIApplicationMain会创建两个组件:

  1. XXApplication类的实例,称为应用程序对象
  2. XXAppDelegate类的实例,称为应用程序委托

    XYAppDelegate类会在两个文件中被定义,这两个文件分别是,接口文件:XYAppDelegate.h和实现文件:XYAppDelegate.m

    个人理解,.h文件应该是定义可接收的事件,和触发之后的回调,.m文件中具体实现回调的内容。

####MVC

#####Model

#####View 位于视图层次顶部的是窗口对象,由UIWindow的实例表示,它是一个最基本的容器对象,但不会显示任何东西。需要将视图对象添加到其中。

视图对象通常用UIKit表示,UIKitUIView类或其子类的实例。

#####Controller

在IOS程序中,可以使用UIViewController来管理视图及其分视图层次。

通过ActionOutlet来定义view和controller之间的关系。

通过向目的视图控制器添加操作方法,可以创建unwind过渡。可以跳转到的方法必须返回一个操作IBAction,并在串联过渡图UIStoryboardSegue中作为参赛使用。

####消息机制 在 Objective-C 术语中,一个对象通过调用另一个对象的方法来向该对象发送消息。

例如:

	[somePerson sayHi]

就是调用somePerson实例的sayHi方法。

####事件

####segue

####Object-C

#####数据类型:

Foundation框架是一个用于定义数据类型的框架,Foundation包括了基本数据的值类(字符串、数字等),以及用于存储其他对象的集合类(例如数组、字典等)。

######值对象:

######集合对象:

#####自定义类:

类的接口和实现放在单独的文件中,分别是.h.m文件。

######接口:

接口的实现方式通常如下:

@interface className : fatherClass

@end

其中fatherClass即为继承的类。

######实现:

实现文件中,需要引入对应的接口文件,如下所示:

#import className.h
@implementation className

@end

如果在接口中声明了任何方法,那么在实现文件中,都需要将其实现。

######属性:

属性定义在接口文件中,如下所示:

@interface className : fatherClass

@property NSString *name = @"MyClass";
@property BOOL complete;
@property (readonly) NSDate *completionDate;

@end

属性是对所有对象公开的,任何调用此对象的其他对象都可以查看或者修改其属性,如果想让属性不可修改,可以加上(readonly)标志,标明只读。

另外,如果想让属性完全私有化,对对象外的其他地方都不可见,那么可以在实现文件中定义该属性:

#import "className.h"
 
@interface XYZToDoItem ()

@property NSDate *completionDate;

@end

######方法:

方法定义对象的行为,类具有哪些方法,需要在接口文件中声明:

@interface className : fatherClass

- (void)markAsCompleted:(BOOL)isComplete;
+ (NSString)returnClassName;
	
@end

在接口文件中使用-声明的,标明该方法是实例方法,使用+声明的,标明该方法是类方法

声明符号后面跟着的括号(void),标明该方法不会返回任何值,如果需要返回值,那么该括号中填写的就是返回值的类型。

再返回值类型声明的后面,是方法名称,也就是在.m文件中,需要对此方法进行实现。

:后面跟着的是参数。参数需要定义类型和名称,在.m文件中,调用参数就需要使用声明中的参数名称,多个参数之间使用空格分割。

方法的具体实现放在.m文件中,如下所示;

#import "className.h"

@implementation className

-(void)markAsCompleted:(BOOL)isComplete {
	// 实现的具体内容
}

@end

在实现方法中self表示该对象本身。

另外,在.m文件中,可以定义对象本身的私有方法。如果一个方法在.m文件中定义,但是没有在.h文件中声明,那么该方法就可以被称为私有方法。私有方法只可以在对象内部被调用,而不能被其他对象调用。

rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora