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
相关推荐
Cocoa数据类型 数据类型 . 20 字符串 . 21 数字 . 22 类集合 . 22 FoundationFoundationFoundation Foundation FoundationFoundation Foundation数据类型 . 24 FoundationFoundationFoundation Foundation ...
主要介绍了Swift使用Cocoa中的数据类型教程,Swift 会自动将一些 Objective-C 类型转换为 Swift 类型,以及将 Swift 类型转换为 Objective-C 类型,需要的朋友可以参考下
详情参考:http://desheng.me 参考Apple Coding Guidelines for Cocoa, Google Objective-C Style Guide,Three20 Source Code Style Guildelines总结的Objective-C编码规范
框架/Cocoa Touch 库时编写的所有 iOS 应用程序。 这里的每个文件夹都是一个完全不同的项目,要么完全由我自己创建,要么来自 Hacking with Swift 网站。 它明确说明了我从头到尾编写了哪个应用程序。 每个项目都...
id:是一种数据类型; id类型被定义为指向对象的指针,这可以从id的定义中看出。id在objc.h中的定义为: typedef struct objc_object { Class isa; } *id; id是一个一个比较灵活的对象指针,并且是一个指向任何一个...
第4章 数据类型和表达式 4.1 数据类型和常量 4.1.1 int类型 4.1.2 float类型 4.1.3 double类型 4.1.4 char类型 4.1.5 限定词:long、long long、short、unsigned及signed 4.1.6 id类型 4.2 算术表达式 4.2.1 运算符...
全书共分为四大部分:第一部分全面讲解了objective-c语言的基础知识,包括类、对象、方法、数据类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二部分详细阐述了foundation...
类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二 部分详细阐述了Foundation框架,涵盖数字、字符串、集合、文件操作、内存管理、对象复制和归 档等重要内容;第三部分简要...
全书共分为四大部分:第一部分全面讲解了Objective-C语言的基础知识,包括类、对象、方法、数据类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二部分详细阐述了Foundation...
Objective-C 是一种面向对象的编程语言,广泛应用于苹果的 macOS 和 iOS 操作系统上的软件开发...1. **Objective-C基础**:介绍Objective-C的历史、环境搭建、基本语法,包括变量、数据类型、控制结构等。 2. **面向对
全书共分为四大部分:第一部分全面讲解了Objective-C语言的基础知识,包括类、对象、方法、数据类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二部分详细阐述了Foundation...
Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(目前支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk和OCaml),并由...
Thrift通过IDL(Interface Definition Language,接口定义语言)来定义RPC(Remote Procedure Call,远程过程调用)的接口和数据类型,然后通过thrift编译器生成不同语言的代码(目前支持C++,Java, Python, PHP, ...
0xed是一个本土OS X上的十六进制编辑器,基于Cocoa framework。 快速编辑的大型文件 无限的文件大小(受到实际的文件...外挂程式在系统中显示您的自定义数据类型。 需要Mac OS X 10.3.9或更新版本。 通用二进制。
MMFlowView是一类支持“的CoverFlow”的效果,它...它同时支持通过Cocoa绑定数据源或图像加载。它是可访问性符合,功能拖放UND直观地预览。它的品牌使用CoreAnimation提供平稳和快速的动画 标签:MMFlowView
SwiftGraph SwiftGraph是图形数据结构的纯Swift(无Cocoa)实现,适用于Swift支持的所有平台(iOS,macOS,Linux等)。 它包括对加权,非加权diSwiftGraph的支持SwiftGraph是图形数据结构的纯Swift(无Cocoa)实现,...
1.字典使用Key-Value的形式储存数据,是关键字... Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。然后你就可以用这个关键字来查找相应的数值。
Thrift是一个软件框架,用来进行...thrift允许你定义一个简单的定义文件中的数据类型和服务接口。以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。 官网地址:thrift.apache.org
Thrift是一个软件框架,用来进行...thrift允许你定义一个简单的定义文件中的数据类型和服务接口。以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。 官网地址:thrift.apache.org