`
johnie_sheng
  • 浏览: 112810 次
  • 性别: 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
分享到:
评论

相关推荐

    From C++ to Objective-C(中文版)

    - **关键字**:为了与C语言兼容,Objective-C的关键字以`@`符号开头,如`@interface`、`@implementation`等。此外,还有一些特殊的关键字如`@property`、`@synthesize`等,用于声明属性和自动生成访问方法。 - **...

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

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

    从C++到Objective C的学习之路

    2. **命名规则与语法**:Objective C的语法比C++更显式,比如方法名前面带有“-”(实例方法)或“+”(类方法)的符号,以及“@”符号用于标识Objective C特有的关键字。C++的语法则更接近C语言,但有更多的模板和...

    Objective-C高级编程 iOS与OS X多线程和内存管理_Objective-C_ios_

    《Objective-C高级编程:iOS与OS X多线程和内存管理》是一本深入探讨Apple平台开发中的关键技术的书籍。本书主要围绕Objective-C语言在iOS和OS X操作系统上的应用,特别是针对多线程和内存管理这两个核心主题进行...

    Objective-C

    Objective-C是在C语言的基础上扩展了Smalltalk式的面向对象特性,使得它既有C语言的强大功能,又具备了面向对象编程的灵活性。 在Objective-C中,类是所有对象的基础。类定义了一组属性(实例变量)和方法(函数)...

    ObjectiveC 学习 入门基 础教程第2版

    ObjectiveC是在C语言的基础上扩展的,因此它保留了C的语法结构,同时引入了Smalltalk的面向对象特性。它的主要特点是动态性、消息传递机制和强大的类库支持。ObjectiveC通过“发送消息”来调用方法,这是一种独特的...

    Objective-C程序设计

    首先,Objective-C是在C语言基础上扩展的,它引入了消息传递机制和类的概念,这使得它具有高度的灵活性和可扩展性。在Objective-C中,对象通过发送消息来执行操作,这种机制类似于其他语言中的方法调用。消息传递的...

    Programming in Objective-C 5th Edition

    Objective-C中的一些关键字包括`@interface`、`@implementation`、`@end`等,这些关键字用于定义和实现类。另外还有一些关键字用于控制流,如`if`、`else`、`for`、`while`等。 1. **选择器**:Objective-C中的方法...

    Programming With Objective-C

    根据给出的内容,我们可以总结出以下关于Objective-C编程语言的知识点,这些知识点将覆盖从Objective-C的基础知识到高级特性,以及如何在iOS移动开发中使用Objective-C: 1. Objective-C简介 Objective-C是一种面向...

    objective-c基础教程

    随着技术的发展和社区的支持,Objective-C未来可能会继续作为一种辅助语言存在,特别是在一些复杂度较高、性能要求严格的项目中。 - **社区支持**: 目前仍有大量的开源库和框架使用Objective-C编写,这些资源将继续...

    入Objective-C协议:@optional和@required关键字的魔力深

    4. **C语言兼容**:与C语言高度兼容,几乎所有的C代码可以直接在Objective-C中使用。 5. **Foundation框架**:通常与苹果的Foundation框架一起使用,后者提供了一系列高级API,包括文件处理、网络通信和数据存储等...

    From C++ to Objective-C

    在Objective-C中,还包含了一些特殊的值,如nil、Nil、YES和NO,这些与C++中的NULL或布尔值true和false不完全相同,需要特别注意。Objective-C同样支持C++中的注释风格(// 和 /*...*/),但其变量声明位置较为灵活...

    Objective-C 编程语言.pdf

    2. **系统级编程**:由于Objective-C与C语言的兼容性,它也被用于开发一些对性能有较高要求的系统级应用或库。 3. **跨平台开发**:虽然Objective-C主要用于苹果平台的开发,但也有第三方工具如Cocoa Touch用于在...

    objective-c基础教程(附源代码)

    首先,Objective-C是在C语言的基础上扩展的,因此,理解C语言的基本语法是学习Objective-C的前提。它引入了消息传递机制,这是Objective-C的关键特性,允许对象之间进行通信。消息传递类似于函数调用,但更加灵活,...

    学习Objective-C: 入门教程

    此外,Objective-C还支持.mm文件类型,允许在Objective-C代码中混合使用C++代码,这对于需要高性能计算的场景非常有用。 #### 示例代码分析 在Objective-C中定义一个类,如MyClass,通常包含以下结构: 1. **类的...

    objective-c的计算器

    Objective-C是一种强大的面向对象编程语言,...以上就是“objective-c的计算器”项目中涉及的一些核心知识点。通过实践这个项目,开发者不仅可以巩固Objective-C的基础,还能对面向对象编程和iOS开发有更深入的理解。

    从C++到 Objective-c

    - **Objective-C** 使用`@`符号来标识关键字,以避免与C语言的关键字冲突。例如,`@interface`, `@implementation`, `@class`等。 - **C++** 引入了新的关键字如`class`来定义类,以及一系列模板和泛型编程的语法...

    Objective-C2.0程序设计习题官方答案

    Objective-C2.0是苹果公司开发的一种面向对象的编程语言,它是C语言的超集,融合了Smalltalk的动态特性,广泛应用于iOS和Mac OS X操作系统。本资料集中的"Objective-C2.0程序设计习题官方答案"显然是针对学习...

    Objective-C Fundamentals

    在Objective-C中,定义类需要使用@interface和@implementation关键字。@interface部分声明了类的接口,包括类名、属性和方法。而@implementation部分则提供了方法的实现。通过继承,Objective-C的类可以继承其他类的...

    从C++到Objective-C

    例如,Objective-C中的类定义使用`@interface`和`@end`关键字,而实例方法使用消息传递的方式调用。相反,C++使用`class`关键字来定义类,并且对象调用成员函数的方式更为直接。 **面向对象特性**:尽管两者都是...

Global site tag (gtag.js) - Google Analytics