对象的初始化

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. cocos2dx3.2 推断音效是否播放

    SimpleAudioEngine类中增加一函数 例如以下 bool isEffectPlaying(unsigned int nSoundId); 定义例如以下 bool SimpleAudioEn ...

  2. Struts2 整合jQuery实现Ajax功能(2)

    1.1.1   Action利用struts2-json-plugin-X.X.X.jar响应Json格式信息: 1.      function removerecordbyid(recordid) ...

  3. SQL2005性能分析一些细节功能你是否有用到?(二)

    原文:SQL2005性能分析一些细节功能你是否有用到?(二) 上一篇:SQL2005性能分析一些细节功能你是否有用到? 我简单的提到了些关于SQL性能分析最基本的一些方法,下面的文章我会陆续补充.前面 ...

  4. Asp.net MVC + EF + Spring.Net 项目实践(二)

    这一篇主要介绍数据库和entity framework集成 1. 先创建数据库,很简单的几张表,但也涉及了一些主外键关系.联合主键等,关系图如下(DB脚本在最后) 2. 打开VS,现在建立Model实 ...

  5. C# foreach 有用方法具体解释

    网上查资料,说foreach 不能改动迭代变量,仅仅能訪问迭代变量.自己理解也不是非常深,通过几个代码进行验证,发现foreach的使用方法还有点特别 验证方法: 1. 迭代变量 为int int[] ...

  6. 《全体育&#183;瑜伽》

    今天出去吃饭,本来是想买<印象>创刊号的,结果没找着,看到一本<瑜伽>创刊号.作为一个伪瑜伽爱好者,我掏了20元大洋买了一本,你知道如今的时尚杂志都非常坏,用塑料膜封着,不能翻 ...

  7. c#-Artificial Intelligence Class

    NET Artificial Intelligence Class http://www.codeproject.com/KB/recipes/aforge_neuro/neuro_src.zip

  8. MVC验证07-自定义Model级别验证

    原文:MVC验证07-自定义Model级别验证 在一般的自定义验证特性中,我们通过继承ValidationAttribute,实现IClientValidatable,只能完成对某个属性的自定义验证. ...

  9. WCF与Web API 区别

    WCF与Web API 区别(应用场景)   Web api  主要功能: 支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, ...

  10. Premiere Pro CC问题集,不断更新

    1.Premiere Pro CC不好用? 是的.原因如下: 1.1 Adobe公司不注重用户体验,不注重工作流程,导致这款软件的用户体验很差,设计也很烂.对比Adobe公司当年用户体验最好的软件 F ...