3.3.7 Cocoa数字类型
本节中的类型不是Objective-C语言的一部分。它们都定义于Cocoa框架中,但是,我们会看到它们经常在这里提及。从Mac OS X 10.5开始,Apple已经使用定义的类型替代了Cocoa框架中int和float的大多数出现,而定义的类型的长度取决于代码是编译为32位可执行程序还是64位可执行程序(参见附录C)。
NSInteger
NSInteger替代了Cocoa框架中大多数int的出现。它在32位环境中定义为int,在64位环境中定义为long(64位整数)。
NSUInteger
NSUInteger是NSInteger的无符号形式。它替代了Cocoa框架中的大多数unsigned的出现。在32位环境中,它是一个无符号的32位整数;在64位环境中,它是一个无符号的long(无符号的64位整数)。
CGFloat
CGFloat替代了float。当针对32位环境编译的时候,它是一个float(32位);当针对64位环境编译的时候,它是一个double(64位)。Foundation框架提供了一个定义的常量,CGFLOAT_IS_DOUBLE,如果需要通过编程知道CGFloat在当前的环境中是一个float还是一个double,使用下面的语句:
- if ( CGFLOAT_IS_DOUBLE )
- NSLog( @"Double !\n");
- else
- NSLog(@"Float !\n");
NSLog
NSLog是Foundation框架中定义的一个用于字符输出的函数。NSLog不是Objective-C语言自身的一部分,但是,这里介绍它,是因为它用于本书中的很多示例和练习中。
NSLog类似于printf,但是有如下一些区别:
NSLog写入控制台日志,也写入一个终端窗口。控制台日志是操作系统负责维护的一个消息日志。在OS X上,可以使用Console应用程序(/Applications/Utilities/ Console.app)来查看控制台日志。
NSLog的格式字符串是一个NSString直接量,而不是一个C字符串直接量。
NSLog在打印后自动换到一个新行。不需要在格式字符串末尾添加一个额外的\n。
NSLog使用一个额外的转换修饰符,%@,它接受一个Objective-C对象作为其参数。在转换中,NSLog调用参数对象的description方法。该description方法返回一个NSString,用以描述该对象。返回的NSString替代了输出中的%@,如下面的例子所示:
- NSString *aString = @"Hello New York!";
-
- NSLog( @"The object description is: %@", aString );
NSString的描述只是字符串本身。执行以上代码,将会产生如下的输出:
- The object description is: Hello New York!
当创建自己的类时,可以覆盖description方法为自己的类提供定制的描述。
注意 如果使用带有%@描述符的格式字符串,但是,忘记了提供一个对应的对象参数,那么NSLog将尝试向位于对象参数所应该放置的地址的字节发送一条description消息。这通常会导致程序崩溃。
在一个发布的程序中,不应该使用NSLog语句(这么做会在客户的控制台日志中产生杂乱信息),但是,对于在学习和调试过程的简单输出来说,它很有用。
NSLog有一项功能可能很恼人,它在你要求其输出的内容前面加了一个长长的字符串信息,其中包括执行该语句的时间和日期(详细到毫秒)、可执行程序的名称,以及执行它的程序的进程id。如下的NSLog语句:
- NSLog( @"Greetings from NSLog" );
将产生如下的输出:
- 2010-02-01 11:41:26.556 a.out[33955:903] Greetings from NSLog
为了显示上的清晰,在本书后面的部分中,在显示NSLog的输出时,我们去除了额外的信息。
转自: http://book.51cto.com/art/201102/245615.htm
相关推荐
9. Cocoa数据类型和Foundation数据类型:这部分讲解了在Swift中如何使用Cocoa和Foundation中的数据类型,以及相关函数的使用。 10. Core Foundation和内存管理:这一部分可能会涉及Swift中的Core Foundation类型,...
Swift提供了与Cocoa数据类型对应的类型,如: **字符串** Swift中的`String`类型对应于Objective-C中的`NSString`。 **数字** Swift中的`Int`、`Double`等类型对应于Objective-C中的`NSInteger`、`CGFloat`等。 ...
- **数字**:Swift的整型和浮点型可以与Objective-C的数据类型相互转换。 - **集合类**:Swift的数组和字典类型可以与Objective-C的`NSArray`、`NSMutableArray`、`NSDictionary`和`NSMutableDictionary`相互转换...
Cocoa数据类型 数据类型 . 20 字符串 . 21 数字 . 22 类集合 . 22 FoundationFoundationFoundation Foundation FoundationFoundation Foundation数据类型 . 24 FoundationFoundationFoundation Foundation ...
3. **Foundation框架**:这是Cocoa的基础,提供了许多基础数据类型、集合类、字符串处理、线程管理等基本服务。理解Foundation框架对于使用Cocoa进行开发至关重要。 4. **AppKit和UIKit**:在Mac OS X上,Cocoa的...
Cocoa的核心是Foundation框架和AppKit框架,前者提供了基础的数据类型和底层功能支持,后者则专注于用户界面组件。 - **Mac OS X应用特点**:Mac OS X以其优雅的界面设计和优秀的用户体验著称,这得益于Cocoa框架的...
Cocoa框架的组件不仅支持传统的应用程序开发,还支持命令行工具、插件和不同类型的程序包开发。开发者可以利用Cocoa框架提供的免费行为和外观,将更多时间投入到应用程序具有特色的功能开发中。在掌握了Cocoa框架的...
- **窗口类型**:列举并解释了Cocoa中可用的不同类型的窗口。 - **菜单设计**:指导读者如何创建菜单并添加菜单项。 - **对话框管理**:讲解了如何使用对话框来提示用户输入或确认操作。 #### 基于文档的应用程序 ...
1. **Swift基础**:Swift语言的基础包括变量、常量、数据类型、控制流(if语句、switch语句)、函数、类和结构体、枚举、协议、扩展以及闭包等。理解这些概念是使用Swift进行Cocoa开发的前提。 2. **Playground**:...
- **Foundation 框架**:这是 Cocoa 的基础框架之一,包含了大量处理基本数据类型(如字符串、数组等)和文件管理等功能的类。它是 Cocoa 应用程序的核心组成部分。 - **AppKit 框架**:专注于图形用户界面的构建,...
Objective-C是苹果早期的编程语言,它是Cocoa框架的基础,具有消息传递机制和动态类型等特点。虽然Swift已经成为苹果官方推荐的语言,但Objective-C在许多现有项目中仍然广泛使用,因此了解其性能调优策略同样重要。...
本教程将深入探讨Swift如何处理Cocoa中的数据类型。 首先,Swift自动将一些Objective-C类型转换为Swift类型,并反之亦然。这种机制被称为“桥接”(bridging)。例如,Swift的`String`类型可以直接用于Objective-C...
1. **Swift基础**:了解Swift的基本语法,如变量和常量、数据类型、控制流语句、函数、类与结构体、继承、协议与扩展。 2. **Swift与Objective-C互操作性**:Swift可以无缝集成Objective-C代码,通过桥接头文件(.h...
CoreData是Cocoa框架中的一个强大组件,它负责数据模型的构建、数据管理以及持久化。CoreData能够简化复杂数据模型的管理,并支持对象图的追踪、撤销/重做以及数据验证等功能。使用CoreData,开发者可以有效地管理...
当你需要在Cocoa应用程序之间传递数据或指令时,启动参数是一个常见且实用的方法。本文将深入探讨如何在Cocoa App中获取启动参数,以及如何通过另一个Cocoa应用程序传递这些参数。 首先,我们要理解什么是启动参数...
- **Foundation框架**:作为Cocoa的核心框架之一,Foundation提供了处理基本数据类型、文件系统访问、网络通信等功能的基础类库。 - **AppKit框架**:专注于桌面应用程序的GUI组件,包括窗口管理、事件处理、菜单等...
- **Foundation Framework**: 提供了基础的数据类型、集合类和其他通用功能。 - **AppKit (Mac OS X)/UIKit (iOS)**: 负责用户界面的创建和管理。 ### 二、Xcode介绍 Xcode是苹果公司为开发者提供的集成开发环境...
2. **Model-View-Controller (MVC)**:Cocoa采用MVC设计模式,将应用程序的数据(模型)、用户界面(视图)和控制逻辑(控制器)分离,从而实现更好的代码组织和可重用性。理解并熟练运用MVC对于构建Cocoa应用至关...