数据类型,

转:http://my.oschina.net/Neogl/blog/190543

导航:

基本类型

ID

对象类型常见的有

对象类型

-NSLog

-NSNumber

-NSString和NSMutableString

-NSArray和NSMutableArray

-NSSet和NSMutableSet

-NSDictionary和NSMutableDictionary

基本类型:

Objective-C中的基本类型和C语言中的基本类型一样.主要有:int,long,float,double,char,void, bool等.

在Foundation中,也为些数据定义了别名,如:NSInteger为long,CGFloat为double,BOOL等.

Objective-C也可以用C语言的构造类型,如数组、结构体、同用体等。

对于基本类型变量,不需要用指针,也不用手动回收,方法执行结束会自动回收。

ID:

在object-c中,对象标识被作为一个特殊的数据类型:id。这个数据类型定义为引用对象的指针。实际上是指向对象实例变量的指针。

对象类型常见的有:

NSlog

NSString

NSInteger

NSURL

NSImage

NSNumber

NSLog

格式如下

%@对象

%d,%i整数

%u无符整形

%f浮点/双字

%x,%X二进制整数

%zu size_t %p指针

%e浮点/双字

%g浮点/双字

%s C字符串

%*s Pascal字符串

%c 字符

%C unicha

%lld 64位长整数

(long long)%llu无符64位长整数

%Lf 64位双字

NSNumber

NSNumber是Objective-c的数字对象。需求考虑内存释放问题。

1   NSNumber *number = [NSNumber numberWithInt:123];
2  
NSLog(@"%i",[number intValue]);
3   NSLog(@"%i",[number
retainCount]);

//输出

2010-12-29 16:02:35.040 HelloWorld[4710:a0f] 123

2010-12-29 16:02:35.042 HelloWorld[4710:a0f] 1

NSString和NSMutableString

NSString是不可变字符串(NSContantString),其变量和其本类型一样不需要手动释放(它的retainCount为-1)。

NSString赋值:

NSString *str1 = @"str....";  //(不需要手动释放)
NSString *str2 = [[NSString alloc] initWithString:@"str..."]; //不需要手动释放

因为对NSString赋值,会产生成的对象,所在方法中用NSString作临时对象,也要考虑内存开消问题。

NSMutableString是可变字符串,若用
“[[NSMutableString alloc] init...]”方法初始化,需要考虑手动释放。

1     NSString *str = @"this is str...";
2     NSMutableString *mstr = [NSMutableString stringWithString:str];
3     str = @"sss";
4     NSLog(@"%@",mstr);
5     NSLog(@"%@",str);

输出:

1 this is str...
2 sss

注:因为NSMutableString是NSString的子类,实际应用中很可以把NSMutableString变量赋给NSString。所以若用NSString做类的属性,也会用手动释放的方式:

 1 //接口文件
 2  @interface TestProperty : NSObject {
 3     NSString *name;
 4     NSInteger myInt;
 5 }
 6 
 7 @property (copy,nonatomic) NSString *name;
 8 @property NSInteger myInt;
 9 
10 @end

 1 //实现类
 2  @implementation TestProperty
 3 @synthesize name;
 4 @synthesize myInt;
 5  
 6  -(void) dealloc{
 7     self.name = nil;
 8     [super dealloc];
 9 }
10  
11 @end

例:

代码

 1 int main (int argc, const char * argv[]) {
 2   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
 3   
 4   NSMutableString *str1 = [NSMutableString stringWithString:@"this is str"];
 5   NSMutableString *str2 = [NSMutableString stringWithString:str1];
 6   [str2 appendString:@"sss"];
 7   NSLog(@"%@",str1);
 8   NSLog(@"%@",str2);
 9   [pool drain];
10   return 0;
11 }
12 
13  //输出
14  2010-12-30 11:43:13.511 HelloWorld[2119:a0f] this is str
15  2010-12-30 11:43:13.521 HelloWorld[2119:a0f] this is strsss
16 
17 可以看出str2不是指向str1的,而是新的对象!!

NSArray和NSMutableArray

NSArray是不可变数组,一般用于保存固定数据。和NSString不同的是,NSArray有retainCount,所以释放问题。

NSMubleArray是变数组,可以直接对其值进行操作。也可考虑释放问题。

NSMubleArray是NSArray的子类。

 1     NSArray *arr = [NSArray arrayWithObjects:@"Sep",@"Januay",@"",nil];
 2     NSArray *arr_ = [arr sortedArrayUsingSelector:@selector(compare:)];
 3     NSLog(@"%i",[arr retainCount]);
 4     for(NSString *name in arr_){
 5         NSLog(@"%@",name);
 6     }
 7 
 8  //输出
 9  2010-12-29 13:36:16.830 HelloWorld[3325:a0f] 1
10  2010-12-29 13:36:16.833 HelloWorld[3325:a0f] Januay
11  2010-12-29 13:36:16.833 HelloWorld[3325:a0f] Sep

代码

 1     NSMutableArray *arr = [NSMutableArray   arrayWithObjects:@"Sep",@"Januay",@"",nil];
 2     [arr sortUsingSelector:@selector(compare:)];
 3     NSLog(@"%i",[arr retainCount]);
 4     for(NSString *name in arr){
 5         NSLog(@"%@",name);
 6     }
 7 
 8  //输出
 9 2010-12-29 13:41:34.925 HelloWorld[3415:a0f] 1
10 2010-12-29 13:41:34.928 HelloWorld[3415:a0f] Januay
11 2010-12-29 13:41:34.930 HelloWorld[3415:a0f] Sep

NSSet和NSMutableSet

NSSet和NSMutableSet分别是不可变集合和可变集合。集合是一组单值的操作。NSSet和NSMutableSet都需要考虑释放问题。

代码

1     NSSet *set = [NSSet setWithObjects:[NSNumber
numberWithInt:10],@"bb",@"aa",@"bb",@"aa",nil];
2     for(id *obj
in set){
3         NSLog(@"%@",obj);
4    
}
5     NSLog(@"%i",[set count]);
6    
NSLog(@"%i",[set retainCount]);

//输出

2010-12-29 13:56:08.397 HelloWorld[3709:a0f] 10

2010-12-29 13:56:08.400 HelloWorld[3709:a0f] aa

2010-12-29 13:56:08.401 HelloWorld[3709:a0f] bb

2010-12-29 13:56:08.401 HelloWorld[3709:a0f] 3

2010-12-29 13:56:08.402 HelloWorld[3709:a0f] 1

NSDictionary和NSMutableDictionary

dictionary是由键-对象对组成的数据集合。NSDictionay和NSMutableDicionary都需要考虑内存释放问题。

代码

1     NSDictionary *dict = [NSDictionary
2      
                   
dictionaryWithObjects:[NSArray arrayWithObjects:@"val1",@"val2",nil]
3
                     
    forKeys:[NSArray arrayWithObjects:@"key2",@"key1",nil]];
4
   
5     for(NSString *key in dict){
6    
    NSLog(@"%@",[dict objectForKey:key]);
7     }
8
    NSLog(@"%i",[dict retainCount]);
9     [pool
drain];

//输出

2010-12-29 15:37:42.745 HelloWorld[4085:a0f] val2

2010-12-29 15:37:42.748 HelloWorld[4085:a0f] val1

2010-12-29 15:37:42.749 HelloWorld[4085:a0f] 1

由上面结果可以看出Dicionary是按Key排序的。

数据类型,,布布扣,bubuko.com

时间: 2024-10-19 17:11:22

数据类型,的相关文章

MariaDB(MySQL)创建、删除、选择及数据类型使用详解

一.MariaDB简介(MySQL简介略过) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB. MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL A

JavaScript数据类型检测

一.JavaScript 数据类型 1.基本数据类型(6种) Undefined Null Boolean Number String Symbol (ES6新增) 2.引用数据类型: Object 二.数据类型检测 1. typeof 可以检测除null 外的基本类型.null 和所有对象的typeof都是"object", 不能用于检测用户自定义类型. 比如Date, RegExp, Array, DOM Element的类型都是"object". var s

【个人笔记】《知了堂》MySQL中的数据类型

MySQL中的数据类型 1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediumint(m) 3个字节  范围(-8388608~8388607) int(m) 4个字节  范围(-2147483648~2147483647) bigint(m) 8个字节  范围(+-9.22*10的18次方) 取值范围如果加了unsigned,则最大值翻倍,如tinyint un

英文词频统计预备 组合数据类型练习

1.实例: 下载一首英文的歌词或文章,将所有,.?!等替换为空格,将所有大写转换为小写,统计某几个单词出现的次数,分隔出一个一个的单词. big='''OoohOooh Put your make-up onGet your nails doneCurl your hairRun the extra mileKeep it slim so they like you, do they like you? Get your sexy onDon't be shy, girlTake it offT

Java基础——数据类型

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 一.数据类型(八种): 1.计算机的存储进位:位是最小的存储数据单位,以此类推,如图: 2.在java里我们可以使用 0b或者0x表示二进制和十六进 如:0xABC或0b01010001: 3.在java里面数据存储中高位是1 就是负数,高位是0 就是正数: 4.Java数据类型详解: 整数数值:int short:小于32767 byte:小于127 小数

python数据类型详解

主要内容: 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 列表与元组 定义列表 1 list = ['a' , 'b', 'c', 'd'] 通过下标访问列表中的元素,下标从0开始计数 1 list[0] # 'a' 2 list[1] # 'b' 3 list[-1] # 'd' 4 list[-2] # 'c' 基本操作: 切片:取多个元素 1 list = ["A","B","C","D",&

MongoDB的数据类型(四)

JSON JSON是一种简单的数据表示方式,它易于理解.易于解析.易于记忆.但从另一方面来说,因为只有null.布尔.数字.字符串.数组和对象这几种数据类型,所以JSON有一定局限性.例如,JSON没有日期类型,JSON只有一种数字类型,无法区分浮点数和整数,更别说区分32为和64位数字了.再者,JSON无法表示其他一些通用类型,如正则表达式或函数. BSON BSON(Binary Serialized Document Format)是一种类JSON的二进制形式的存储格式,简称Binary

myasql支持的数据类型以及函数转换

myasql支持的数据类型 1.数值类型 tinyint 1 小整数 smallint 2 大整数 mediumint 3 大整数 int 4 大整数 bigint 8 极大整数 如果插入 的较大较小 会自动改编为范围值 多余的数截取 float 4 double 8 decimal 默认是10 可以指定多少个整数和小数 2.字符串类型 char 0-255字节 定长字符串 varchar 0-255字节 变长字符串 tinyblob 0-255字节 不超过255个字符的二进制字符 tintex

C# 《三》变量、常量与数据类型(1)

变量操作 在计算机中存储数据和儿童在抽屉中存放物品很类似. 1.计算机存储变量的过程: 1)声明变量: 2)给变量赋值: 3)使用变量. 声量的声明.赋值 1.要在计算机中存一个数字 50,需要两句话. int a; //将要放的物品告诉家长(声明变量) a = 50; //将物品放到某个抽屉中 (赋值) 2.声明变量的语法格式: 1)数据类型   变量名: 3.赋值:  变量名  = 值: 4.可以  a = 3.14 :吗??? 5.数据有整数(int).小数(double).字符串(str

Python 03-pyc、数据类型

pyc是什么? 在Python3中才有的. Java是先编译再解释.Python也是基于虚拟机的语言. 执行Python时,会先编译,编译的结果保存在位于内存中的PyCodeObject中,运行时解释器将PyCodeObject写回到pyc文件,它是预编译后的二进制的字节码文件. 第二次运行时,会先找pyc文件.所以pyc文件其实是PyCodeObject的一种持久化保存方式. 第二次运行时,会先检查下时间,看下有没有过修改,如果有修改会再编译一次. 数据类型 type()查看数据类型 1.in