`
johnie_sheng
  • 浏览: 110419 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Objective C中的一些关键字

阅读更多

 

关于变量的作用域

@protected —Methods defined in the class and any subclasses can directly access the instance variables that follow.This is the default case.

该类和所有的子类中的方法可以直接访问这样的变量,这是默认的。


@private —Methods defined in the class can directly access the instance variables that follow, but subclasses cannot.

该类中的方法可以访问这样的变量,子类不可以。


@public —Methods defined in the class and any other classes or modules can di- rectly access the instance variables that follow.

除了自己和子类中的方法外,也可以被其他类或者其他模块中的方法所访问。开放性最大。


@package —For 64-bit images, the instance variable can be accessed anywhere within the image that implements the class.

对于64位图像,这样的成员变量可以在实现这个类的图像中随意访问。

 

全局变量(extern)

在程序的开始处,没有在一个方法里面写了

int gMoveNumber=0;

那么我们说这个变量就是全局变量,也就是说在这个模块中的任何位置可以访问这个变量。

 

这样的变量也是外部全局变量,在其他文件中也可以访问它。但是访问的时候要重新说明下这个变量,说明的方法是:

extern int gMoveNumber;

 

当然我们也可以在声明的时候加上extern关键字。

extern int gMoveNumber=0;

这样的话在其他的类中使用还是需要重新说明一下了,而且这时候编译器会给出警告。

 

如果这个全局变量只是在自己的类中使用,或者其他的类使用的它情况也比较小,那么我们把它定义成第一种情况,如果在外部文件使用的也比较多的话,那么我们把它定义成第二种情况。

 

这种定义其实违背了封装性。

 

静态变量(static)

因为全局变量是全局的,影响封装,所以有时候要用静态变量。

static int gMoveNumber;

这是这个变量是这个类中的静态变量。如果不定义初始值的话为零。

 

如果静态变量定义在方法中,那么这个变量在方法执行完之后还是有效的,如果在第一次调用的时候改变了这个变量的值,那么在第二次调用的时候,这个变量的值是被改变过的值。

 

如果被定义在类中,那么这种改变也是有效的,就是作用域发生了改变。一个在方法中,一个在类中。

 

atomic和nonatomic

nonatomic是告诉系统不要使用mutex(互斥)锁定。这种锁定会导致系统的性能低下,所以一般在多线程的时候使用atomic,平时多数用nonatomic。

 

@synthesize和@dynamic

 

@synthesize will generate getter and setter methods for your property.

@dynamic just tells the compiler that the getter and setter methods are implemented not by the class itself but somewhere else (like the superclass)

Uses for @dynamic are e.g. with subclasses of NSManagedObject (CoreData) or when you want to create an outlet for a property defined by a superclass that was not defined as an outlet:

 

Super class:

@property(nonatomic, retain)NSButton* someButton;
...
@synthesize someButton;

 

Subclass:

@property(nonatomic, retain)NSButton* someButton;
...
@dynamic someButton;
 
0
2
分享到:
评论

相关推荐

    Objective-Final:模拟Objective-C中Java的final或C#的密封关键字的保护

    模拟Objective-C中Java的final或C#的密封关键字的保护 该库允许将类标记为 final - 防止它被子类化,或将单个方法标记为 final - 防止它们在子类中被覆盖。 与 Java 和 C# 等效项相比,这些检查在运行时发生,而不是...

    Objective-C学习笔记(一)OC基础.md

    2. 第一个OC程序,讲解了如何创建一个OC项目,解释了一些OC程序中的关键字和语法。 3. OC基础语法,对比了OC和C语言的一些区别和共同点。 4. 面向过程与面向对象的概念,并解释了使用面向对象思维解决问题的好处。 5...

    Objective-C2.0程序设计

    第1部分 Objective-C语言 第2章 Objective-C程序设计 2.1 编译并运行程序 2.1.1 使用Xcode 2.1.2 使用Terminal 2.2 解释第一个程序 2.3 显示变量的值 2.4 小结 2.5 练习 第3章 类、对象和方法 3.1 到底什么是对象 ...

    Objective-C中Self和Super详解

    Objective-C中Self和Super详解本文要介绍的内容,在Objective-C中的类实现中经常看到这两个关键字self和super,以以前oop语言的经验,拿c++为例,self相当于this,super相当于调用父类的方法,这么看起来是很容易...

    Objective-C入门.ppt )

    多个关键字请用空格分隔,最多填写5个。点击右侧我的Tag可快速添加

    传智博客-Objective-C PPT

    本套PPT,拥有以下OC语言的内容: ...二、OC的特有语法(点语法、@property、@synthesize关键字、id、构造方法、分类、description、SEL) 三、内存管理 四、协议(protocol)代码块(block) 五、ARC 等等

    简单讲解Objective-C的基本特性及其内存管理方式

    Oc语言在c语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,在OC代码中,可以混用c,甚至是c++代码。 可以使用OC开发mac osx平台和ios平台的应用程序。 拓展名:c语言-.c OC语言.-m 兼容C++.-mm 注:...

    domainr-objectiveC:Domainr 的 Objective-C API 包装器

    Objective-C Domainr API 包装器 使用/安装 将domainr文件夹复制到您的项目中。 在你的源代码中有一个#import Domainr.h : #import Domainr.h 实例化Domainr类的一个新实例: Domainr *d = [[Domainr alloc] ...

    BTextHighlighting:使用Levenshtein算法的Objective C文本突出显示库。 在搜索结果中突出显示搜索关键字变得容易

    BTextHighlighting用法在您的项目中添加两个文件创建一个NSMutableAttributedString字符串: NSMutableAttributedString *hl = [[NSMutableAttributedString alloc]initWithString:@"Hello world"];并通过传递子字符...

    Objective-C的入门学习笔记

    因此你在编程时比如你想以字符串形式和计算机交流,那你很容易就能想到在C中可以使用String这个类,在java中也是Stirng (当然,前提是你至少有一种同抽象级别得语言基础),那OC呢,也有这样一个类吧,不过是某种...

    举例讲解Objective-C中@property属性的用法

    主要介绍了Objective-C中@property属性的用法,包括@property的属性关键字的整理,需要的朋友可以参考下

    Objective-C的另类教程

    一般教程,又是语法又是关键字的. 本编教程 直接讲几个关键性技术. 让你立马能上手做一个有"深度"的应用程序. 前提是, 你应该会一些简单的操作, 比如建立一个项目 等等 本教程 旨在 满足已经入门有待提高的开发者...

    Objective-C的测试框架gh-unit

    Objective-C的测试框架gh-unit,源码gh-unit,GHUnit是一款Objective-C的测试框架,除了支持iOS工程还支持OSX的工程。可以作为单独的测试框架,也可以和其他测试框架一同使用,比如SenTestingKit或者GTM。 功能 ...

    ZuSimpelColor:iOS 开发人员使用 CSS color 关键字的颜色选项

    单色iOS 开发人员使用 CSS color 关键字的颜色选项只需将 ZuSimpelColorClass 拖到您的项目中,然后将头文件ZuSimpelColor.h导入到您的文件中,并ZuSimpelColor.h您在进行 Web 开发一样免费使用 CSS color 关键字。...

    install-clang6.zip

    Clang是一个C语言、C++、Objective-C语言的轻量级编译器。源代码发布于BSD协议下。Clang将支持其普通lambda表达式、返回类型的简化处理以及更好的处理constexpr关键字。是一个由Apple主导编写,基于LLVM的C/C++/...

    learn-c

    C预处理程序不是编译器的一部分,而是编译过程中的一个单独步骤。 简单来说,C预处理器只是一种文本替换工具,它指示编译器在实际编译之前进行所需的预处理。 我们将C预处理器称为CPP。 所有预处理器命令均以哈希...

    object c/iphone 开发 试题

    other sources:存放除objective-c类之外的源代码文件; resources: 包含应用程序中的非代码文件(因为应用程序只能在自己的沙盒中运行,不然找不到); Frameworks:特殊的库,可以存放库、框架、图像、声音等资源; ...

    ios课件及代码

    在Objective-c中,⼦类可继承⽗类中的⽅法,⽽不需要重新编写相同的⽅法,直接可以使 ⽤⽗类的⽅法。 但有时我们不想使⽤使⽤⽗类⽅法,⽽是想作⼀定的修改,怎么办呢?只要将⼦类中书写 ⼀个与⽗类具有相同的⽅法名...

    JSPatch学习笔记-UI基础

    * 使用OC中的枚举类型 `Objective-C 里的常量不能直接在 JS 上使用,可以直接在 JS 上用具体值代替,或者在 JS 上重新定义同名的全局变量` 3. 类的扩展 * 重写方法(调用父类方法,需添加`ORIG`关键字) * 覆盖方法...

Global site tag (gtag.js) - Google Analytics