首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

objective-c根本数据类型

2012-07-01 
objective-c基本数据类型1、Object-c提供基本数据类型:int、float 、double 、char ? ?示例代码测字节数:?//数

objective-c基本数据类型

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 ?//%g自动根据数的长度选取%f还是%e

    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??

    Member.h

  • #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??

    Member.m

  • #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

    注:id 类型可以通过类型转化符可以将一般的id 类型的对象转换成特定的对象。
    看上面程序中有@property和@synthesize修饰;

    @property和@synthesize,在接口文件中使用@property来标识属性(一般是实例变量),在实现文件中使用@synthesize标识所声明的属性,让系统自动生成设置方法和获取方法.

    格式:@property (属性列表)实例变量,


    (二)枚举数据类型、typedef 语法以及数据类型的转换和C?是一样。 ? ?

    (三)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)相关。

    ok!

    ?

  • 热点排行