第1、2章总结
1、比较旧的Iphone只有一个程序在运行
2、IOS开发的框架Cocoa Touch 与 MAC上的开发Cocoa框架稍有不同(IOS框架没有Core Data或Cocoa Binding)
3、受限访问 只能在iphone为程序创建的文件系统(沙盒)中读写文件,程序在其中存储文档、首选项等
4、有限的响应时间 在按下Home键后,5秒后会结束程序进程,所以要在5秒内保存用户数据
5、新属性 获得用户坐标
我们的程序包含两个按钮和一个用于反映按钮状态的文本标签。我们将在Interface Builder中创建这三个元素。
既然我们将编写代码,那么代码必须要通过某种方式与IB中创建的元素进行交互
控制器类可以使用一种特殊的实例变量来引用nib中的对象,这个变量就是输出口(outlet),可以把输出口看成是指向nib中的指针。
举例来说,假如你中IB中创建了一个文本标签,并且希望在代码中修改该标签的文本,通过声明一个输出口,并将其指向此标签对象,
你可以在代码中使用该输出口来修改标签。另一方面,也可以设置nib文件中的界面对象触发控制器中的特殊方法,这些特殊方法称为
操作方法,举例来说,你可以告诉IB,当用户放开某个按钮时,调用代码中的特定方法。
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController{
IBOutlet UILabel *statusText;
}
@property (retain,nonatomic) UILabel *statusText;
-(IBAction)buttonPressed:(id)sender;
@end
retain通知编译器向分配给此属性的对象发送一个保留(retain)信息。这将确保属性低层的实例变量在使用过程中不会从内存中清除
nonatomic将更改访问方法和修改方法的生成方式。简单来说,在默认情况下,这些方法在创建时会具备另外一些代码,用于帮助你编写多线程程序。
@implementation ViewController
@synthesize statusText;
-(IBAction)buttonPressed:(id)sender
{
NSString *title = [sender titleForState:UIControlStateNormal];
NSString *newText = [[NSString alloc] initWithFormat:@"%@ button pressed.",title];
statusText.text = newText;
[newText release];
}
- (void)dealloc {
[statusText release];
[super dealloc];
}