`
cuichang
  • 浏览: 92717 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Cocoa数字类型

阅读更多

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,使用下面的语句:

  1. if ( CGFLOAT_IS_DOUBLE )  
  2.   NSLog( @"Double !\n");  
  3. else  
  4.   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替代了输出中的%@,如下面的例子所示:

  1. NSString *aString =  @"Hello New York!";  
  2.  
  3. NSLog( @"The object description is: %@", aString ); 

NSString的描述只是字符串本身。执行以上代码,将会产生如下的输出:

  1. The object description is: Hello New York! 

当创建自己的类时,可以覆盖description方法为自己的类提供定制的描述。

注意   如果使用带有%@描述符的格式字符串,但是,忘记了提供一个对应的对象参数,那么NSLog将尝试向位于对象参数所应该放置的地址的字节发送一条description消息。这通常会导致程序崩溃。

在一个发布的程序中,不应该使用NSLog语句(这么做会在客户的控制台日志中产生杂乱信息),但是,对于在学习和调试过程的简单输出来说,它很有用。

NSLog有一项功能可能很恼人,它在你要求其输出的内容前面加了一个长长的字符串信息,其中包括执行该语句的时间和日期(详细到毫秒)、可执行程序的名称,以及执行它的程序的进程id。如下的NSLog语句:

  1. NSLog( @"Greetings from NSLog" ); 

将产生如下的输出:

  1. 2010-02-01 11:41:26.556 a.out[33955:903] Greetings from NSLog 

为了显示上的清晰,在本书后面的部分中,在显示NSLog的输出时,我们去除了额外的信息。

 

 

转自:   http://book.51cto.com/art/201102/245615.htm

分享到:
评论

相关推荐

    Using Swift with Cocoa and Objective-C完整中文CocoaChina精校版

    Cocoa数据类型 数据类型 . 20 字符串 . 21 数字 . 22 类集合 . 22 FoundationFoundationFoundation Foundation FoundationFoundation Foundation数据类型 . 24 FoundationFoundationFoundation Foundation ...

    Swift使用Cocoa中的数据类型教程

    主要介绍了Swift使用Cocoa中的数据类型教程,Swift 会自动将一些 Objective-C 类型转换为 Swift 类型,以及将 Swift 类型转换为 Objective-C 类型,需要的朋友可以参考下

    Daniel's Objective-C Coding Style Guidelines

    详情参考:http://desheng.me 参考Apple Coding Guidelines for Cocoa, Google Objective-C Style Guide,Three20 Source Code Style Guildelines总结的Objective-C编码规范

    leetcode耗时-iOS-Apps:存储我迄今为止使用Swift和SwiftUI框架/CocoaTouch库编写的所有iOS应用程序的存储

    框架/Cocoa Touch 库时编写的所有 iOS 应用程序。 这里的每个文件夹都是一个完全不同的项目,要么完全由我自己创建,要么来自 Hacking with Swift 网站。 它明确说明了我从头到尾编写了哪个应用程序。 每个项目都...

    iOS中id类型的理解及底层原理详解

    id:是一种数据类型; id类型被定义为指向对象的指针,这可以从id的定义中看出。id在objc.h中的定义为: typedef struct objc_object { Class isa; } *id; id是一个一个比较灵活的对象指针,并且是一个指向任何一个...

    Objective-C2.0程序设计

    第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 2.0程序设计(原书第2版)》[PDF]

    全书共分为四大部分:第一部分全面讲解了objective-c语言的基础知识,包括类、对象、方法、数据类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二部分详细阐述了foundation...

    Objective-C 2.0程序设计

    类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二 部分详细阐述了Foundation框架,涵盖数字、字符串、集合、文件操作、内存管理、对象复制和归 档等重要内容;第三部分简要...

    Programming in Objective-C, 4th Edition

    全书共分为四大部分:第一部分全面讲解了Objective-C语言的基础知识,包括类、对象、方法、数据类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二部分详细阐述了Foundation...

    Object-c的概要介绍与分析

    Objective-C 是一种面向对象的编程语言,广泛应用于苹果的 macOS 和 iOS 操作系统上的软件开发...1. **Objective-C基础**:介绍Objective-C的历史、环境搭建、基本语法,包括变量、数据类型、控制结构等。 2. **面向对

    《Objective-C2.0程序设计(原书第2版)》_中文完整版

    全书共分为四大部分:第一部分全面讲解了Objective-C语言的基础知识,包括类、对象、方法、数据类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二部分详细阐述了Foundation...

    thrift-0.2.0

    Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(目前支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk和OCaml),并由...

    thrift-0.12.0

    Thrift通过IDL(Interface Definition Language,接口定义语言)来定义RPC(Remote Procedure Call,远程过程调用)的接口和数据类型,然后通过thrift编译器生成不同语言的代码(目前支持C++,Java, Python, PHP, ...

    Mac上的十六进制编辑器:0xED

    0xed是一个本土OS X上的十六进制编辑器,基于Cocoa framework。 快速编辑的大型文件 无限的文件大小(受到实际的文件...外挂程式在系统中显示您的自定义数据类型。 需要Mac OS X 10.3.9或更新版本。 通用二进制。

    MMFlowView.zip

    MMFlowView是一类支持“的CoverFlow”的效果,它...它同时支持通过Cocoa绑定数据源或图像加载。它是可访问性符合,功能拖放UND直观地预览。它的品牌使用CoreAnimation提供平稳和快速的动画 标签:MMFlowView

    Pure Swift中的图数据结构-Swift开发

    SwiftGraph SwiftGraph是图形数据结构的纯Swift(无Cocoa)实现,适用于Swift支持的所有平台(iOS,macOS,Linux等)。 它包括对加权,非加权diSwiftGraph的支持SwiftGraph是图形数据结构的纯Swift(无Cocoa)实现,...

    NSDictionary_NSMutableDictionary

    1.字典使用Key-Value的形式储存数据,是关键字... Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。然后你就可以用这个关键字来查找相应的数值。

    thrift-0.9.3.exe

    Thrift是一个软件框架,用来进行...thrift允许你定义一个简单的定义文件中的数据类型和服务接口。以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。 官网地址:thrift.apache.org

    thrift-0.10.0.exe

    Thrift是一个软件框架,用来进行...thrift允许你定义一个简单的定义文件中的数据类型和服务接口。以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。 官网地址:thrift.apache.org

Global site tag (gtag.js) - Google Analytics