Cocoa应用开发:从基础到实践
立即解锁
发布时间: 2025-08-25 02:22:37 阅读量: 2 订阅数: 7 

# Cocoa应用开发:从基础到实践
## 1. 连接动作与实现动作方法
在开发Cocoa应用时,我们需要将界面元素与控制器进行连接,并实现相应的动作方法。以下是具体步骤:
1. **连接动作**:在Interface Builder中,按住Ctrl键,点击标有“Right”的按钮,将其拖动到nib主窗口中的控制器图标上。释放鼠标后,会弹出一个灰色菜单,选择“buttonPressed:”。对其他两个按钮重复此操作,这样三个按钮都会触发“buttonPressed:”动作方法。完成后,按`⌘S`保存nib文件,然后关闭并返回Xcode。
2. **实现动作方法**:在`ButtonsAppDelegate.m`中添加以下代码:
```objc
#import "ButtonsAppDelegate.h"
@implementation ButtonsAppDelegate
@synthesize label;
- (IBAction)buttonPressed: (id)sender {
NSString *title = [sender title];
NSString *labelText = [NSString stringWithFormat:@"%@ button pressed.", title];
[label setStringValue:labelText];
}
@end
```
此方法会获取被点击按钮的标题,创建一个字符串,并更新标签显示该字符串。
3. **编译并运行**:按`⌘R`或从“Build”菜单中选择“Build & Run”来编译并运行应用。点击三个按钮,会发现一个动作方法可以处理所有按钮。
### 嵌套消息
有些Objective - C开发者会深度嵌套消息调用,例如:
```objc
[label setStringValue:[NSString stringWithFormat:@"%@ button pressed.", [sender title]]];
```
这一行代码的功能与`buttonPressed:`方法的三行代码相同。为了清晰起见,通常不会在代码示例中进行深度嵌套,除了`alloc`和`init`调用,它们通常会嵌套。
## 2. 应用委托与配置应用退出
当关闭应用窗口时,应用可能仍在运行。我们可以通过应用委托来配置应用在窗口关闭时退出。
1. **应用委托简介**:每个Cocoa应用都有一个`NSApplication`实例,它负责处理事件循环等底层任务。`NSApplication`允许指定一个可选对象作为其委托,委托可以在应用生命周期的特定点执行操作。
2. **配置应用委托**:如果使用Snow Leopard,`ButtonsAppDelegate`类可能已经在nib文件中配置为应用委托。否则,双击`MainMenu.xib`打开Interface Builder,按住Ctrl键,从“File’s Owner”拖动到“Main Controller”图标,弹出菜单后选择“delegate”,保存nib文件并返回Xcode。
3. **配置应用退出**:在`ButtonsAppDelegate.m`中添加以下方法:
```objc
#import "ButtonsAppDelegate.h"
@implementation ButtonsAppDelegate
@synthesize label;
- (IBAction)buttonPressed: (id)sender {
NSString *title = [sender title];
NSString *labelText = [NSString stringWithFormat:@"%@ button pressed.", title];
[label setStringValue:labelText];
}
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *) theApp {
return YES;
}
@end
```
此方法会让应用在最后一个窗口关闭时退出。再次运行应用,关闭主窗口,应用应该会退出。
## 3. 使用文档浏览器
我们可以通过文档浏览器查找应用委托方法。按住`Option`键(Leopard系统)或`Option + ⌘`键(Snow Leopard系统),在编辑面板中双击`NSApplication`,会打开文档浏览器显示其定义。在导航面板中找到“Delegate Methods”,点击可查看所有支持的委托方法。
## 4. 常见GUI组件介绍
Cocoa提供了多种常见的用户界面类,它们具有广泛的用途,并尽可能提供一致的API。以下是一些常见的GUI组件:
| 组件名称 | 描述 |
| ---- | ---- |
| NSTextField | 许多应用的基本文本输入方法,响应按键并渲染文本,用户编辑灵活性高 |
| NSButton | 基本的鼠标触发GUI组件,包括单选按钮、复选框和普通按钮 |
| NSPopUpButton | 当需要用户从一组字符串中选择时使用 |
| NSComboBox | 类似于`NSPopUpButton`,但允许用户输入列表中没有的值 |
| NSMatrix | 可以将一系列相似的控件组合成一个单元 |
| NSLevelIndicator | 通常用于显示预定义范围内的数值,也可用于输入数据 |
| NSImageView | 用户可以通过拖动图像到该组件将图像导入应用 |
| NSTextView | 几乎是一个完整的文本编辑器,支持多种字体、格式和标尺等 |
## 5. 创建VillainTracker应用
我们将创建一个名为“VillainTracker”的应用,用于跟踪超级反派的信息。以下是具体步骤:
1. **创建新项目**:启动Xcode,选择“File” -> “New Project”,在左侧选择“Mac OS X”下的“Application”,右侧选择“Cocoa Application”,点击“Choose...”。在保存面板中导航到合适的目录,输入项目名称“VillainTracker”并点击“Save”。
2. **创建VillainTrackerAppDelegate类**:
- 如果使用Snow Leopard,Xcode可能已经创建了`VillainTrackerAppDelegate`类。否则,在项目的“Classes”组中,右键点击并选择“Add” -> “New File...”,在左侧选择“Mac OS X”下的“Cocoa”,右侧选择“Objective - C class”,点击“Next”。输入类名“VillainTrackerAppDelegate.m”,确保勾选创建匹配的`.h`文件,点击“Finish”。
- 在`VillainTrackerAppDelegate.h`中添加以下代码:
```objc
#import <Cocoa/Cocoa.h>
@interface VillainTrackerAppDelegate : NSObject {
NSMutableDictionary *villain;
}
@property (retain) NSMutableDictionary *villain;
@end
```
- 在`VillainTrackerAppDelegate.m`中添加以下代码:
```objc
#import "VillainTrackerAppDelegate.h"
@implementation VillainTrackerAppDelegate
@synthesize villain;
@end
```
- 编译项目,确保没有错误。
## 6. 规划GUI
在创建GUI之前,我们需要为每个GUI控件添加出口和动作到控制器类。
1. **映射属性到GUI类**:根据反派属性的类型和用途,将其映射到合适的GUI类,如下表所示:
| 属性名称 | 类型 | 视图类 |
| ---- | ---- | ---- |
| name | 自由格式字符串 | NSTextField |
| lastKnownLocation | 自由格式字符串 | NS
0
0
复制全文
相关推荐









