对象的初始化

Fraction *myFract=[[Fraction alloc] init];//初始化对象

[myFract setTo:1 over:3];//设置初始值

初始化对象和设置初始值的过程通常可以合并到一个方法中。

myArray=[[NSArray alloc] initWithArray:myOtherArray];

常见的编程习惯类中的所有初始化方法都以init开头。

编写初始化方法的策略:

通过复写init方法达成目的;必须将父类init方法的执行结果赋值给self(因为初始化过程改变了对象在内存中的位置--意味着引用将要改变);如果有多个初始化方法,应把参数最多的初始化方法作为指定的初始化方法,其他的初始化方法调用指定的初始化方法,这样可以把大部分初始化代码集中到单个方法中。

-(Fraction *)initWith:(int)n over:(int)d
{
self=[super init];
if (self) {
[self setTo:n over:d];
}
return self;
}

初始化方法示例

为了符合初始化规则,应该重写Fraction类的init方法,这一点尤其在作为子类时特别重要;所有的初始化方法都应返回id类型,这是编写可能会被继承的类初始化方法的一般规则,因为子类的对象并不等同于父类。

作用域

@protected  可被该类及任何子类中定义的方法直接访问--接口部分定义的实例变量默认是这种作用域

@private  可被定义在该类的方法直接访问,当时不能被子类中定义的方法直接访问--实现部分定义的实例变量默认是这种作用域

@pubilc  可被该类中定义的方法访问,也可被其他类或模块中定义的方法直接访问

@package  对于64位映像,可以在实现该类的映像中的任何地方访问这个实例变量

全局变量

在程序的开始处(所有的方法、类定义和函数定义之外)编写int gMoveNumber=0,那么gMoveNumber即为全局变量,而且是外部全局变量。

惯例,g作为全局变量的首字母

需要访问别的文件中定义的全局变量,只需在声明前加上关键字extern。

#import <Foundation/Foundation.h>
#import "Foo.h" int gGlobalVar=;
int main(int argc, const char * argv[]) {
@autoreleasepool {
Foo *myFoo=[[Foo alloc] init];
NSLog(@"%i",gGlobalVar); [myFoo setgGlobalVar:];
NSLog(@"%i",gGlobalVar);
}
return ;
}

main方法

-(void) setgGlobalVar:(int) val
{
extern int gGlobalVar;
gGlobalVar=val;
}

Foo类的setgGlobalVar方法

结果:5

   10

静态变量

希望定义的全局变量只在特定的模块(文件)中是全局的,除了特定类中的方法之外没有其他方法需要访问这个特定变量。则该变量需要定义为静态变量。静态变量定义如下:static int gGlobalVar=0

枚举数据类型

enum flag{false,true};
enum direction{up,down,left=,right};
enum {east,west,south,north} direction;

枚举定义

 数据类型转换

如果其中一个操作数是long double,另一个操作数被转换为long double型,计算结果也是这种类型

如果其中一个操作数是double,另一个操作数被转换为double型,计算结果也是这种类型

如果其中一个操作数是float,另一个操作数被转换为float型,计算结果也是这种类型

如果其中一个操作数是Bool、char、short int、bit field或者枚举数据类型,全部转换为int型

如果其中一个操作数是long long int,另一个操作数被转换为long long int型,计算结果也是这种类型

如果其中一个操作数是long int,另一个操作数被转换为long int型,计算结果也是这种类型

到这一步,两个都是int,计算结果也为int

但是涉及到unsigned操作数时,转换规则更为复杂

位运算符(暂缓)

OC-变量和数据类型的更多相关文章

  1. [C语言入门笔记]变量与数据类型

    变量与数据类型 什么是变量? 变量是一个变化的量 是内存中的一个空间 变量的定义方法是什么? 数据类型 变量名 = 值; 数据类型有哪些? 整型int 浮点型float double 字符型char ...

  2. JS魔法堂:函数重载 之 获取变量的数据类型

    Brief 有时我们需要根据入参的数据类型来决定调用哪个函数实现,就是说所谓的函数重载(function overloading).因为JS没有内置函数重载的特性,正好给机会我们思考和实现一套这样的机 ...

  3. Python变量、数据类型6

    1.Python变量 变量,即代表某个value的名字. 变量的值存储在内存中,这意味着在创建变量时会在内存中开辟一个空间. !!!即值并没有保存在变量中,它们保存在计算机内存的深处,被变量引用.所以 ...

  4. JS代码放置位置、变量与数据类型、运算符与逻辑表达运算符

    内容简要: 1.JS代码放置位置的问题: 2.变量与数据类型: 3.运算符与逻辑表达式的运算符   我的位置 全局问题:为何在网页推荐位置(一般在<head></head>内部 ...

  5. C#变量与数据类型

    数据类型: 整型:int short long byte 小数:double float decimal 布尔:bool 字符:char 定义变量: 数据类型 变量名 [= 值]; 变量名的命名规则: ...

  6. isa class 帮助确定对象或变量的数据类型

    isa class 帮助确定对象或变量的数据类型

  7. Java基础复习之一篇:关健字,标识符,注释,常量,进制转换,变量,数据类型,数据类型转换

    1.关健字 1.1.被Java语言赋予特定意义的单词(如:class,interface,public ,static) 1.2.全部是小写 1.3.注意事项(goto和const作为关健字保留起来) ...

  8. 《JavaScript 闯关记》之变量和数据类型

    当程序需要将值保存起来以备将来使用时,便将其赋值给一个变量,值的类型称作数据类型. 变量 JavaScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据.换句话说,每个变量仅仅是 ...

  9. php什么是变量的数据类型

    什么是变量的数据类型 在变量中,由于变量占用的空间单元不一样(占的地盘大小不一样),也分成几种数据类型,就像超市商品的包装袋,有几种不同类型,不同的商品使用不同的包装袋.我们可以通过使用“memory ...

  10. type,isinstance判断一个变量的数据类型

    type,isinstance判断一个变量的数据类型 import types type(x) is types.IntType # 判断是否int 类型 type(x) is types.Strin ...

随机推荐

  1. Redis MSET的极限在哪里

    ·背景 Redis以"快.准.狠"而著称,除了其主-从模式略失光彩(主从模式更多是被以讹传讹,3.0依旧在测试中),大部分的应用可谓尖兵利器.在一些常规写的时候,MSET和HMSE ...

  2. 快速构建Windows 8风格应用2-创建调试应用

    原文:快速构建Windows 8风格应用2-创建调试应用 本篇博文主要介绍的是创建应用时可以选择哪些模版,生成默认的Windows 8风格应用解决方案中含哪些文件,最后是如何调试Windows 8风格 ...

  3. Linux内核头文件与内核与库的关系

    看上一篇文章中对buildroot的介绍,里面的文档第 3.1.1.1 Internal toolchain backend 节内容 C库会去访问Linux kernel headers(*.h)文件 ...

  4. 轨道sql谈话 dbms_monitor

    经常会遇到一个会话存在sql性能问题,但找不到哪一个sql导致DB更高的性能问题,这是我们需要在此session通过监测dbms_monitor软件包来实现. 首先确定要监控的会话sid及serial ...

  5. 在Android中自动实现横竖屏切换的问题

    http://developer.android.com/training/basics/supporting-devices/screens.html参照Google推荐的做法 在你项目的res 文 ...

  6. 安装系统提示选中的磁盘具有MBR分区表

    引用:http://jingyan.baidu.com/article/ff42efa9693e88c19e22020c.html 进入bios看到  UEFI状态时  Enabled 启用状态,那么 ...

  7. Varnish缓存服务

    Varnish缓存服务详解及应用实现   1.varnish的基本介绍   Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一,他认为现在的计算机比起1975年已 ...

  8. Forget Java to learn Javascript from 0.--Preface

    I'm going to start to learn Javascript in this month. Someone told me you can't learn another langua ...

  9. .Net组件程序设计

    .Net组件程序设计之上下文 在后续篇幅的远程调用的文章里有说到应用程序域,那是大粒度的控制程序集的逻辑存在,那么想对对象的控制又由谁来做主呢?没错了,就是上下文.CLR把应用程序域更细化了,在应用程 ...

  10. 调式WP程序报0x80131500错误的解决办法

    在虚拟机上安装了win8系统和VS2013,但是在允许第一个WP程序时,居然报0x80131500错误信息,经查询原来是VS2013需更新的问题,如果你用的是VS2012,但是又系统升级到了win8. ...