MVC。主要使用Interface Builder来创建视图组件,但有时仍需要在代码中修改界面,或需要继承已有的视图和控件;创建模型的方法是设计一些OC类来保存应用程序数据;控制区通常由开发人员创建的类和特定于应用程序的类组成,可以完全自定义但更多是UIKit框架中已有通用控制区类,如UIViewController。
代码需要通过某种方式和在Interface Builder中创建的元素交互。控制器可以使用一种特殊的实例变量来引用nib中的对象,即输出口outlet,可以看做指向nib中对象的指针。举例:假设在Interface Builder中创建了一个文本标签,并希望在代码中修改该标签的文本,就可以通过声明一个输出口,并将其指向此标签对象,在代码中使用该输出口来修改标签。
相反,也可以设置.nib文件中的界面对象触发控制器类中的特殊方法,称为操作方法,比如当用户放开某按钮时触发调用代码中的特定操作方法。
控制器头文件中输出口声明:
IBOutlet UIButton *myButton;
任何需要连接到nib文件中的对象的实例变量都必须以IBOutlet关键字打头。在打开IB时,会在项目头文件中扫描此关键字,并允许根据这些变量将代码连接到nib。
操作方法的声明:
- (IBAction)doSomething:(id)sender;
需要修改界面的哪个对象才需要有相应的输出口,比如标签有,按钮没有。
许多操作方法都特定于某个控件,但也可用一个操作来处理来自多个控件的输入。
@property (retain, nonatomic) UILabel *statusText;
retain通知想分配给此属性的对象发送一个保留消息,确保属性底层的实例变量在使用过程中不会从内存中清除。如果定义的属性是一个对象,则通常应该在可选属性中指定retain,而为int、float或其他原始数据类型声明属性时,不需要指定任何可选属性。
nonatomic将更改访问方法和修改方法的生成方式。默认时这些get/set方法在创建时会具备另一些代码帮助编写多线程程序,但对于声明指向用户界面对象的指针没有必要。故大多数情况下,编写iPhone应用程序时都指定此属性。
@synthesize statusText;
通知编译器自动创建访问方法和修改方法。
通用内存规则“如果未分配它或保留它,则不要释放它”。若使用简便方法或工厂方法则使用了自动释放池,分配给自动释放对象的内存在对象使用完后还会保留一段时间。而在iPhone中即使很小的内存泄露也会造成致命伤害。
委托即负责为另一个对象处理特定事情的类。通过应用程序委托,可以在预先定义的时间为UIApplication处理事情。每个iPhone应用程序都有一个且仅有一个UIApplication实例,负责应用程序的运行循环以及处理各种应用程序级功能,如将输入发送给合适的控制器类。
Main Window.xib文件的作用是让应用程序委托、主窗口和视图控制器实例在运行时创建。
当UIViewController的某个实例或某个子类被实例化时,它将查找相应的nib文件。若找到则将其加载到内存中并成为该nib文件的所有者。控制器类是与之同名的nib文件的所有者。
代码需要通过某种方式和在Interface Builder中创建的元素交互。控制器可以使用一种特殊的实例变量来引用nib中的对象,即输出口outlet,可以看做指向nib中对象的指针。举例:假设在Interface Builder中创建了一个文本标签,并希望在代码中修改该标签的文本,就可以通过声明一个输出口,并将其指向此标签对象,在代码中使用该输出口来修改标签。
相反,也可以设置.nib文件中的界面对象触发控制器类中的特殊方法,称为操作方法,比如当用户放开某按钮时触发调用代码中的特定操作方法。
控制器头文件中输出口声明:
IBOutlet UIButton *myButton;
任何需要连接到nib文件中的对象的实例变量都必须以IBOutlet关键字打头。在打开IB时,会在项目头文件中扫描此关键字,并允许根据这些变量将代码连接到nib。
操作方法的声明:
- (IBAction)doSomething:(id)sender;
需要修改界面的哪个对象才需要有相应的输出口,比如标签有,按钮没有。
许多操作方法都特定于某个控件,但也可用一个操作来处理来自多个控件的输入。
@property (retain, nonatomic) UILabel *statusText;
retain通知想分配给此属性的对象发送一个保留消息,确保属性底层的实例变量在使用过程中不会从内存中清除。如果定义的属性是一个对象,则通常应该在可选属性中指定retain,而为int、float或其他原始数据类型声明属性时,不需要指定任何可选属性。
nonatomic将更改访问方法和修改方法的生成方式。默认时这些get/set方法在创建时会具备另一些代码帮助编写多线程程序,但对于声明指向用户界面对象的指针没有必要。故大多数情况下,编写iPhone应用程序时都指定此属性。
@synthesize statusText;
通知编译器自动创建访问方法和修改方法。
通用内存规则“如果未分配它或保留它,则不要释放它”。若使用简便方法或工厂方法则使用了自动释放池,分配给自动释放对象的内存在对象使用完后还会保留一段时间。而在iPhone中即使很小的内存泄露也会造成致命伤害。
委托即负责为另一个对象处理特定事情的类。通过应用程序委托,可以在预先定义的时间为UIApplication处理事情。每个iPhone应用程序都有一个且仅有一个UIApplication实例,负责应用程序的运行循环以及处理各种应用程序级功能,如将输入发送给合适的控制器类。
Main Window.xib文件的作用是让应用程序委托、主窗口和视图控制器实例在运行时创建。
当UIViewController的某个实例或某个子类被实例化时,它将查找相应的nib文件。若找到则将其加载到内存中并成为该nib文件的所有者。控制器类是与之同名的nib文件的所有者。
转载于:https://blog.51cto.com/afantihust/467935