1. 程式人生 > >objective-c基本資料型別【轉】

objective-c基本資料型別【轉】

1、Object-c提供基本資料型別:int、float 、double 、char    

示例程式碼測位元組數:

  1. //資料型別:
  2.         //整形(int、short int、long int、unsigned int、unsigned short、unsigned long)
  3.         NSLog(@"整形:");  
  4.         NSLog(@"%lu",sizeof(int));//整形4個位元組
  5.         NSLog(@"%lu",sizeof(shortint));//短整形2
  6.         NSLog(@"%lu",sizeof(longint));//長整形8
  7.         NSLog(@"%lu",sizeof(unsigned int));//無符號整形4
  8.         NSLog(@"%lu",sizeof(unsigned short));//無符號短整形2
  9.         NSLog(@"%lu",sizeof(unsigned long));//無符號長整形8
  10.         //實形(float 、double 、long double)
  11.         NSLog(@"實形:");  
  12.         NSLog(@"%lu",sizeof(float));//浮點形4
  13.         NSLog(@"%lu",sizeof(double));//雙精度形8
  14.         NSLog(@"%lu",sizeof(longdouble));//長精度形16
  15.         //字元型和字串形 
  16.         char a='a';  
  17.         char b=100;  
  18.         NSLog(@"%c,%c",a,b);  
  19.         NSLog(@"%i,%i",a,b);  
  20.         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型別是一個獨特的資料型別,在概念上,類似javaObject類,可以轉換為任何資料型別。換句話說,id型別變數可以存放任何資料型別的物件。在內部處理上,這種型別被定義為指向物件的指標,實際上是一個指向這種物件的例項變數的指標。需要注意的是id是一個指標,所以在使用id的時候不需要加星號;

比如說:id foo=nil;

該語句定義了一個nil指標,這個指標指向NSObject的任意一個子類。而“id *foo=nil"則定義了一個指標,這個指標指向另一個指標,被指向這個指標指向NSObject的一個子類;

下面是一個示例:兩個不同的類(一個是學生類Student,一個是會員類Member),這兩個類擁有不同的成員變數和方法。

Student.h

  1. #import <Foundation/Foundation.h>
  2. @interface Student : NSObject{  
  3.     int sid;  
  4.     NSString *name;  
  5. }  
  6. @property int sid;  
  7. @property (nonatomic,retain)NSString *name;  
  8. -(void)print;  
  9. -(void)setSid:(int)sid andName:(NSString*)name;  
  10. @end  

Student.m

  1. #import "Student.h"
  2. @implementation Student  
  3. @synthesize sid,name;  
  4. -(void)print{  
  5.     NSLog(@"我的學號是:%i,我的名字是:%@",sid,name);  
  6. }  
  7. -(void)setSid:(int) sid1 andName:(NSString *)name1{  
  8.     self.sid=sid1;  
  9.     self.name=name1;  
  10. }  
  11. @end  
Member.h
  1. #import <Foundation/Foundation.h>
  2. @interface Member : NSObject{  
  3.     NSString *name;  
  4.     int age;  
  5. }  
  6. @property (nonatomic,retain)NSString *name;  
  7. @property int age;  
  8. -(void)print;  
  9. -(void)setName:(NSString*)name1 andAge:(int)age1;  
  10. @end  
Member.m
  1. #import "Member.h"
  2. @implementation Member  
  3. @synthesize name,age;  
  4. -(void)print{  
  5.     NSLog(@"我的名字是:%@,我的年齡是%i",name,age);   
  6. }  
  7. -(void)setName:(NSString *)name1 andAge:(int)age1{  
  8.     self.name=name1;  
  9.     self.age=age1;  
  10. }  
  11. @end  

主函式main.m裡:
  1. id fo;  
  2.         NSLog(@"%lu",sizeof(fo));  
  3.         Member *member1=[[Member alloc]init];  
  4.         [member1 setName:@"Sam" andAge:36];  
  5.         id data;  
  6.         data=member1;//由於id型別的通用性質,我們可以將建立好的物件賦值給data;
  7.         [data print];  
  8.         Student *student1=[[Student alloc]init];  
  9.         [student1 setSid:1122334455 andName:@"Lee"];  
  10.         data=student1;  
  11.         [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 語法以及資料型別的轉換和是一樣。    

(三)BOOL布林值:

布林值為YES/NO,1/0.假是0;這個沒什麼好說的

(四)sel選擇器

選擇器就是指向方法的一個指標,可以簡單理解為程式執行到這裡就會執行指定的方法;

(五)nil和Nil

nilC語言的NULL相同。nil表示一個Objctive-C物件,這個物件的指標指向空(沒有東西就是空)。

而Nil首字母大寫的Nilnil有一點不一樣,Nil定義一個指向空的類(是Class,而不是物件)。

(六)IMP

IMP是一個指向函式的指標,這個被指向的函式包括id(“self指標),呼叫的SEL(方法名),再加上一些其他引數。

說白了IMP就是實現方法。

 (六)class

與java類似,你可以使用class類來獲得一個物件所屬的類

(七)Method

Method(我們常說的方法)表示一種型別,這種型別與selector和實現(implementation)相關。

ok!