对象的初始化

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. 【百度地图API】如何给自定义覆盖物添加事件

    原文:[百度地图API]如何给自定义覆盖物添加事件 摘要: 给marker.lable.circle等Overlay添加事件很简单,直接addEventListener即可.那么,自定义覆盖物的事件应 ...

  2. 关于重写ID3 Algorithm Based On MapReduceV1/C++/Streaming的一些心得体会

    心血来潮,同时想用C++连连手.面对如火如荼的MP,一阵念头闪过,如果把一些ML领域的玩意整合到MP里面是不是很有意思 确实很有意思,可惜mahout来高深,我也看不懂.干脆自动动手丰衣足食,加上自己 ...

  3. C#二维码生成解析

    C#二维码生成解析工具,可添加自定义Logo 二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能 ...

  4. Android利用CountDownTimer类实现倒计时功能

    public class MainActivity extends Activity { private MyCount mc; private TextView tv; @Override publ ...

  5. CSS3制作日历

    目标是制作如下面DEMO显示的一个日历效果: HTML Markup 先来看看其结构: <div class="calendar"> <span class=&q ...

  6. ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)

    原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!)   继上篇:ORACLE P ...

  7. u-boot学习(两):u-boot简要分析

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 看到不错的文章.不要加入收藏夹, ...

  8. Android小应用-----画画板

    public class MainActivity extends Activity { private ImageView iv; float startX = 0; float startY = ...

  9. [译]在运行时内存中的Java对象是怎么样的

    (文章翻译自What do Java objects look like in memory during run-time?) 我们知道函数在内存中是作为一个活动记录栈来实现的.而且我们知道Java ...

  10. JSON解析之Json-lib

    1.Json-lib介绍 Json-lib是一个java类库,它用于把beans, maps, collections, java arrays and XML 传递给一个Json,或者返回来把Jso ...