文档章节

【OC】五、变量和数据类型

包灬子
 包灬子
发布于 2014/03/11 10:08
字数 716
阅读 266
收藏 0

对象初始化

先创建对象的实例,然后进行初始化

代码就是这样:Fraction *mFraction = [[Fraction alloc] init];

我们并不需要自己去编写init方法,这个方法在父类NSObject中已经实现

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

如果希望在类对象初始化的时候做一些事情,我们可以覆写init方法,我们看下怎么去覆写

-(id)init
{
    self = [super init];
    if(self){
        //这里写入自己的初始化内容
    }
    return self;
}

上面的写法首先会调用父类的初始化方法,然后再执行自己的代码

作用域

  • 控制实例变量作用域的指令

        在接口部分声明实例变量时,可以把以下指令放在实例变量之前

@protected 默认不写就是这个   ,可被该类及任何子类中的方法直接访问

@private 只能在该类中直接访问

@public 能被所有直接访问

@package 能在任意地方访问

举个例子

@interface Fraction : NSObject
{
    @private
        int pageCount;
        int tonerLevel;
    @protected
        int size;
}
@end

之前我们讲过@synthesize指令

编码规范目前的趋势是使用下划线作为实例变量名字的起始字符

@interface Fraction : NSObject
@property int _size;
@end

@implementation Fraction
@synthesize size = _size;
@end

当我们用@synthesize name=_name;时,就为属性取了一个别名,那样的话,指针变量,跟编译器生成的get,set方法为属性赋值时就容易区分了!

  • 全局变量

        当我们在程序开始处编写下面的代码(所有方法,类定义,函数定义之外)

            int gSize = 0;

        那么这个模块中任何位置都可以引用这个变量的值  这里 size被定义为全局变量 

按照惯例 全局变量首字母用小写的g

        上面的代码 我们不仅仅将gSize定义为全局变量,而且将其定义为外部全局变量

外部全局变量是可被其他任何方法或函数访问和更改其值的变量

        同样  我们还可以在声明前添加关键词 extern 也可以创建外部全局变量

  • 静态变量

        在变量前添加static关键词

枚举数据类型

    枚举数据类型的定义以关键词enum开头,之后是枚举数据类型的名称,然后是标识符序列

        enum flag {false, true};

    要声明一个enum flag类型的变量  下面是声明语句

        enum flag data;

typedef语句

    oc允许编程者为数据类型指派一个名称,语句如下:

        typedef int Counter;

    定义名称Counter等价于int  接下来的代码中可以使用Counter声明

        Counter i ;  等价于 int i;

        举个例子

        typedef Name *NameObj;

        NameObj name1, name2;  等价于 Name *name1, *name2;





© 著作权归作者所有

共有 人打赏支持
包灬子
粉丝 11
博文 37
码字总数 10847
作品 0
无锡
架构师
私信 提问
【OC】八、数字(NSNumber)

之前说过的int float long 等等 都是oc中的基本数据类型 他们都不是对象 但是 有时候 我们需要将这些值作为对象使用 这时候 我们可以使用NSNumber类来存储基本数据类型 NSNumber的多个创建方...

包灬子
2014/03/14
0
0
【OC】【高斯模糊效果】

贡献作者 -【XJDomain】 博客XJ: https://my.oschina.net/shengbingli/blog GitHub直播地址: https://github.com/lishengbing/XJDomainLive UIImage分类: 使用:...

XJDomain
2016/12/12
25
0
【OC】十二、词典对象(NSDictionary & NSMutableDictionary)

词典由键-对象组成的数据集合 可以通过键去获取需要的值,通常键是字符串,但是也可以是其他对象类型 和键关联的值可以是任何对象 但是不能是nil 创建一个空的可变词典 [NSMutableDictionary...

包灬子
2014/03/17
0
0
【OC】【直播点赞动画】

贡献作者 -【XJDomain】 博客XJ: https://my.oschina.net/shengbingli/blog GitHub直播地址: https://github.com/lishengbing/XJDomainLive 直接调用这个方法就可以,前提是资源包需要导入你...

XJDomain
2016/12/12
16
0
JavaScript 初步学习

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML标准通...

什么都不懂的小石
2017/12/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

租房软件隐私保护如同虚设

近日,苏州市民赵先生向江苏新闻广播新闻热线025-84658888反映,他在“安居客”手机应用软件上浏览二手房信息,并且使用该软件自动生成的虚拟号码向当地一家中介公司进行咨询。可电话刚挂不久...

linux-tao
今天
1
0
分布式项目(五)iot-pgsql

书接上回,在Mapping server中,我们已经把数据都整理好了,现在利用postgresql存储历史数据。 iot-pgsql 构建iot-pgsql模块,这里我们写数据库为了性能考虑不在使用mybatis,换成spring jd...

lelinked
今天
4
0
一文分析java基础面试题中易出错考点

前言 这篇文章主要针对的是笔试题中出现的通过查看代码执行结果选择正确答案题材。 正式进入题目内容: 1、(单选题)下面代码的输出结果是什么? public class Base { private Strin...

一看就喷亏的小猿
今天
2
0
cocoapods 用法

cocoapods install pod install 更新本地已经install的仓库 更新所有的仓库 pod update --verbose --no-repo-update 更新制定的仓库 pod update ** --verbose --no-repo-update...

HOrange
今天
3
0
linux下socket编程实现一个服务器连接多个客户端

使用socekt通信一般步骤 1)服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。 2)客户端:socker()建立套接字,连接(connect)服务器,连接上后...

shzwork
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部