IOS开发第二讲 基本数据类型 类的新建 一些常用技巧

objective-c的数据类型

我们知道Objective-c是C语言的面向对象语言,在xcode我们可以编写C语言,还有C++ 。
因此我们之前的C语言的数据类型还是能用的。
比如int i = 20; float f = 12.4f; double d = 12.5; char c = 'a';(char c = '\n';)\是转义字符,其实是一个字符 而编译器会默认认为12.5是double类型的所以再后面加来区分,至于以什么格式符来显示自己决定。%g %e %f
还有字符串常量 NSString *str = @"qiqi";
由于值域可能不能满足需要。所以有一些修饰符 long longlong short
unsigned 以signed
比如char ‘a’ '\n' %c
short int %hi %hx %ho
unsigned short int  %hi %hx %ho
int %i %x %o
unsigned int %u %x %o
long int %li %lx %lo
id %p
例如
spacer.gif 163153739.png
运算符和其他的语言都是一样的运算包括优先级等
    int a = 10;
    int b = 4;
    int c = 23;
    int d = 4;
    float f = 12.5;
    int result ;
    float resultf;
    result = a - b;
    NSLog(@"a-b====%d",result);
    result = a*c;
    NSLog(@"a*c====%d",result);
    //小数点以后的都去掉
    result = a/d;
     NSLog(@"a/d====%d",result);
    result = a+(b*d);
     NSLog(@"a+b*d====%d",result);
    result = a%d;
     NSLog(@"a d=%d",result);
    //整数取模
//    resultf = f%c;
//    NSLog(@"a/f=%d",result);
       对于/运算取的是 如果两个都是整数就会按照整数的运算方式运算,如果是有一个是浮点数,那么会按照浮点数的方式运算
 类型转化
 int i=12.8;
    NSLog(@"i==%d",i);
    float f = 12;
    NSLog(@"f=%f",f);
    int result = 12/4;
    NSLog(@"result=%d",result);
    float resultf = 12/4;
    NSLog(@"result=%f",resultf);
    //有一个是浮点数结果作为浮点数
    float resultff = 10/4.5;
    NSLog(@"result====%f",resultff);
    int ii = (int)23.55 + (int)34.77;
     NSLog(@"ii====%d",ii);
    int iii = 23 + 34;
     NSLog(@"ii====%d",iii);
    float ff = (float)5 / (float)2;
     NSLog(@"ff====%f",ff);
    float fff = (float)5/2;
     NSLog(@"fff====%f",fff);
赋值运算符

    int i =10;

    i +=10;

    NSLog(@"i=%d",i);

    int a = 2;

    int b = 0,c=3;

    a *=b + c;

    NSLog(@"a=%d",a);



C的基本类型 C的5种类型:char int float double void 并且仍然可以使用 short long signed unsigned 等修饰符

此外C语言的一些复合类型就是id SEL nil NULL等

id是指向任意对象的指针,类似与C语言的void* .这里任意对象是指objective-C所有的继承与NSObject类的实例。在cocoa中,NSObject是所有类的根类,所以可以用id指向任何类型的对象。

SEL用来指向任何方法的定义 实际上呢就是const char* 类似与C语言的函数指针,要创建SEL的类型有两种方法:一种是通过@selector()关键字

SEL doSomeThing = @selector(Mymethod)

SEL doSomeThing = @selector(Mymethod:)

SEL doSomeThing = @selector(Mymethod: withArgument:)



如果我们有了SEl,我们就可以让一个对象来执行它。

用 performSelector: or performSelector:withObject: 方法

[obj performSelector:];

[obj performSelector:shootAtSelector withObject:];


在UIButton 里面

[button addTarget:self action:@selector(myMethod:) ];

另一种是用NSSelectorFromString()我们把方法签名以字符串的方式作为参数传递,这种方式类似objective-c的反射机制

BOOL类型

C语言拥有布尔数据类型bool,它具有true值和false值

在objective-C里面BOOL YES NO YES是非零 NO就是零

signed char 可以直接用%d来输出

if (flag) { }

if (!flag) { }


if (flag == YES) { }

if (flag == NO) { }

if (flag != NO) { }






nil 

#define nil ((id)0)

nil表示0值指针nil表示不指向任何东西

可以隐含测试是否为nil。

if (obj) { }

想nil发送消息就不会崩溃程序,事实上什么也不会执行,如果有返回值,那就返回0。

int i = [obj methodReturnsInt];

除了一个情况,如果返回的是个C结构体怎么办?如果你给一个nil的返回C结构体的对象发消息,你得到的是一个未定义的C结构体。这个东西是随机的并不是你要想的。

CGPoint p = [obj getLocation];


id someObj = [[Obj alloc] init];

[someObj doSomeThing];

if(someObj ){...}

Nil 

一个空指针指向objective-c的类


NULL 一个基于C风格的内存指针指向任何东西

#define NULL ((void *)0


NSNull 一个类定义了一个单例对象用来表示集合里的空值

 NSObject *obj1 = [NSNull null];

  NSArray *arr1 = [NSArray arrayWithObjects:@"One", @"TWO", obj1, @"three" ,nil];

  for (NSString *str in arr1) {

   if (![str isEqual:[NSNull null]]){

    NSLog(@"array object: %@", [str lowercaseString]);

   }

  } 

cocoa foundation里的NS开头的类 core foundation以CF开头的比如:

NSString NSArray NSNumber NSDictionay 


NS结构体

cocoa foundation里定义了大量的结构体 如NSRange,NSPoint.NSSize等

objective-c里的变量声明和C完全相同:类型<变量 名字>如果声明对象加上指针符号“*” 以后我们经常见到 NSString * NSArray *

常量的声明方法

枚举

typedef enum{


 kCircle,


 kRectangle,


 kOblateSpheroid


} ShapeType;


静态变量

static NSString *obj = @"qiqi";


 宏预处理

#define API @“http://....”

#define KButtom 100



objective-c包含头文件 #import 之前C是#include但是想C C++为了防止头文件重复包含需要经常这样定义.h

#ifndel_MYOBJ_H

#define _MYOBJ_H

#endif

objective-C用import这样更加简化

以后也会碰到@Class 这样情况我们只要要知道某个对象属于某个类而已

#import“”和#import<>双引号表示自己创建的文件,一般先搜索本地目录如果没有就跳转其他位置搜索,<>指定系统目录搜索


#pragma mark -命令,当单个文件的代码比较多的时候这样比较容易组织管理代码,看着比较清晰

184158660.jpg

184206556.jpg


本文出自 “人魔七七 QQ群:124525793” 博客,谢绝转载!

你可能感兴趣的:(ios,开发,教程)