原文来自于:http://blog.csdn.net/rhljiayou/article/details/7397889
1、Object-c提供基本数据类型:int、float 、double 、char
示例代码测字节数:
- //数据类型:
- //整形(int、short int、long int、unsigned int、unsigned short、unsigned long)
- NSLog(@"整形:");
- NSLog(@"%lu",sizeof(int));//整形4个字节
- NSLog(@"%lu",sizeof(short int));//短整形2
- NSLog(@"%lu",sizeof(long int));//长整形8
- NSLog(@"%lu",sizeof(unsigned int));//无符号整形4
- NSLog(@"%lu",sizeof(unsigned short));//无符号短整形2
- NSLog(@"%lu",sizeof(unsigned long));//无符号长整形8
- //实形(float 、double 、long double)
- NSLog(@"实形:");
- NSLog(@"%lu",sizeof(float));//浮点形4
- NSLog(@"%lu",sizeof(double));//双精度形8
- NSLog(@"%lu",sizeof(long double));//长精度形16
- //字符型和字符串形
- char a='a';
- char b=100;
- NSLog(@"%c,%c",a,b);
- NSLog(@"%i,%i",a,b);
- NSLog(@"我是字符串");//字符串形:@“我是字符串”
运行结果:
2012-03-27 10:36:41.618 HelloWorld[724:707]整形:
2012-03-27 10:36:41.624 HelloWorld[724:707] 4
2012-03-27 10:36:41.625 HelloWorld[724:707] 2
2012-03-27 10:36:41.626 HelloWorld[724:707] 8
2012-03-27 10:36:41.627 HelloWorld[724:707] 4
2012-03-27 10:36:41.628 HelloWorld[724:707] 2
2012-03-27 10:36:41.628 HelloWorld[724:707] 8
2012-03-27 10:36:41.629 HelloWorld[724:707]实形:
2012-03-27 10:36:41.630 HelloWorld[724:707] 4
2012-03-27 10:36:41.630 HelloWorld[724:707] 8
2012-03-27 10:36:41.631 HelloWorld[724:707] 16
2012-03-27 10:36:41.632 HelloWorld[724:707] a,d
2012-03-27 10:36:41.633 HelloWorld[724:707] 97,100
2012-03-27 10:36:41.633 HelloWorld[724:707]我是字符串
输出格式符:
int:%i,%d,%o,%x
float:%f,%e,%g
double:%f,%e,%g
char:%c
限定符:
(long)
long int:%li
long double:%lf
(long long)
long long int:%lli
(short)
short int:%hi
2、其它类型:
(一)id类型
id类型是一个独特的数据类型,在概念上,类似java的Object类,可以转换为任何数据类型。换句话说,id类型变量可以存放任何数据类型的对象。在内部处理上,这种类型被定义为指向对象的指针,实际上是一个指向这种对象的实例变量的指针。需要注意的是id是一个指针,所以在使用id的时候不需要加星号;
比如说:id foo=nil;
该语句定义了一个nil指针,这个指针指向NSObject的任意一个子类。而“id *foo=nil"则定义了一个指针,这个指针指向另一个指针,被指向这个指针指向NSObject的一个子类;
下面是一个示例:两个不同的类(一个是学生类Student,一个是会员类Member),这两个类拥有不同的成员变量和方法。
Student.h
- #import <Foundation/Foundation.h>
- @interface Student : NSObject{
- int sid;
- NSString *name;
- }
- @property int sid;
- @property (nonatomic,retain)NSString *name;
- -(void)print;
- -(void)setSid:(int)sid andName:(NSString*)name;
- @end
Student.m
- #import "Student.h"
- @implementation Student
- @synthesize sid,name;
- -(void)print{
- NSLog(@"我的学号是:%i,我的名字是:%@",sid,name);
- }
- -(void)setSid:(int) sid1 andName:(NSString *)name1{
- self.sid=sid1;
- self.name=name1;
- }
- @end
- #import <Foundation/Foundation.h>
- @interface Member : NSObject{
- NSString *name;
- int age;
- }
- @property (nonatomic,retain)NSString *name;
- @property int age;
- -(void)print;
- -(void)setName:(NSString*)name1 andAge:(int)age1;
- @end
- #import "Member.h"
- @implementation Member
- @synthesize name,age;
- -(void)print{
- NSLog(@"我的名字是:%@,我的年龄是%i",name,age);
- }
- -(void)setName:(NSString *)name1 andAge:(int)age1{
- self.name=name1;
- self.age=age1;
- }
- @end
主函数main.m里:
- id fo;
- NSLog(@"%lu",sizeof(fo));
- Member *member1=[[Member alloc]init];
- [member1 setName:@"Sam" andAge:36];
- id data;
- data=member1;//由于id类型的通用性质,我们可以将创建好的对象赋值给data;
- [data print];
- Student *student1=[[Student alloc]init];
- [student1 setSid:1122334455 andName:@"Lee"];
- data=student1;
- [data print];
运行结果:
2012-03-27 14:41:01.768 HelloWorld[440:707] 8
2012-03-27 14:41:01.769 HelloWorld[440:707] 我的名字是:Sam,我的年龄是36
2012-03-27 14:41:01.769 HelloWorld[440:707] 我的学号是:1122334455,我的名字是:Lee
@property和@synthesize,在接口文件中使用@property来标识属性(一般是实例变量),在实现文件中使用@synthesize标识所声明的属性,让系统自动生成设置方法和获取方法.
格式:@property (属性列表)实例变量,
(三)BOOL布尔值:
布尔值为YES/NO,或1/0.假是0;这个没什么好说的
(四)sel选择器
选择器就是指向方法的一个指针,可以简单理解为程序运行到这里就会执行指定的方法;
(五)nil和Nil
nil和C语言的NULL相同。nil表示一个Objctive-C对象,这个对象的指针指向空(没有东西就是空)。
而Nil首字母大写的Nil和nil有一点不一样,Nil定义一个指向空的类(是Class,而不是对象)。
(六)IMP
IMP是一个指向函数的指针,这个被指向的函数包括id(“self”指针),调用的SEL(方法名),再加上一些其他参数。
说白了IMP就是实现方法。
(六)class与java类似,你可以使用class类来获得一个对象所属的类
(七)Method
Method(我们常说的方法)表示一种类型,这种类型与selector和实现(implementation)相关。