对象的初始化

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. 从头学起android&lt;AutoCompleteTextView文章提示文本框.十九.&gt;

    文章提示可以很好的帮助用户输入信息,以方便.在Android它也设置有类似特征,而要实现这个功能需要依靠android.widget.AutoCompleteTextView完毕,此类的继承结构例如以 ...

  2. 网站静态化处理—web前端优化—上

    网站静态化处理—web前端优化—上(11) 网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是 ...

  3. HDU 1484 Basic wall maze (dfs + 记忆)

    Basic wall maze Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. DB2数据类型

    DB2数据库的内置数据类型主要分成数值型(numeric).字符串型(character string).图形字符串(graphic string).二进制字符串型(binary string)或日期 ...

  5. YII相关资料(干货)

    Sites 网站 yiifeed:Yii 最新动态都在这里 yiigist:Yii 专用的 Packages my-yii:Yii 学习资料和新闻 Docs 文档 Yii Framework 2.0 ...

  6. testNg自动化,读取excel的数据

    自己写了一个testng执行excel用例的小程序,主要是运行.xlsx的,需要支持xls可以自己扩展,分享一下.下载地址:http://yun.baidu.com/share/link?sharei ...

  7. spring bean范围

    总结: 实例代码具体解释: 文件夹结构 Car.java package com.coslay.beans.autowire; public class Car { private String br ...

  8. VS2010新建Web网站与新建Web应用程序的区别

    在Visual Studio 2010中,除了可以使用“创建Web应用程序”的方式来构建自己的Web项目之外,还可以通过创建“Web网站”的方式来构建Web项其中,Web网站的创建方法:打开Visua ...

  9. nginx启动,重启,关闭命令

    nginx启动,重启,关闭命令 停止操作停止操作是通过向nginx进程发送信号(什么是信号请参阅linux文 章)来进行的步骤1:查询nginx主进程号ps -ef | grep nginx在进程列表 ...

  10. Android项目---TouchListener

    public static interface View.OnTouchListener android.view.View.OnTouchListener Known Indirect Subcla ...