关于变量的作用域
@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;
分享到:
相关推荐
- **关键字**:为了与C语言兼容,Objective-C的关键字以`@`符号开头,如`@interface`、`@implementation`等。此外,还有一些特殊的关键字如`@property`、`@synthesize`等,用于声明属性和自动生成访问方法。 - **...
模拟Objective-C中Java的final或C#的密封关键字的保护 该库允许将类标记为 final - 防止它被子类化,或将单个方法标记为 final - 防止它们在子类中被覆盖。 与 Java 和 C# 等效项相比,这些检查在运行时发生,而不是...
2. **命名规则与语法**:Objective C的语法比C++更显式,比如方法名前面带有“-”(实例方法)或“+”(类方法)的符号,以及“@”符号用于标识Objective C特有的关键字。C++的语法则更接近C语言,但有更多的模板和...
《Objective-C高级编程:iOS与OS X多线程和内存管理》是一本深入探讨Apple平台开发中的关键技术的书籍。本书主要围绕Objective-C语言在iOS和OS X操作系统上的应用,特别是针对多线程和内存管理这两个核心主题进行...
Objective-C是在C语言的基础上扩展了Smalltalk式的面向对象特性,使得它既有C语言的强大功能,又具备了面向对象编程的灵活性。 在Objective-C中,类是所有对象的基础。类定义了一组属性(实例变量)和方法(函数)...
ObjectiveC是在C语言的基础上扩展的,因此它保留了C的语法结构,同时引入了Smalltalk的面向对象特性。它的主要特点是动态性、消息传递机制和强大的类库支持。ObjectiveC通过“发送消息”来调用方法,这是一种独特的...
首先,Objective-C是在C语言基础上扩展的,它引入了消息传递机制和类的概念,这使得它具有高度的灵活性和可扩展性。在Objective-C中,对象通过发送消息来执行操作,这种机制类似于其他语言中的方法调用。消息传递的...
Objective-C中的一些关键字包括`@interface`、`@implementation`、`@end`等,这些关键字用于定义和实现类。另外还有一些关键字用于控制流,如`if`、`else`、`for`、`while`等。 1. **选择器**:Objective-C中的方法...
根据给出的内容,我们可以总结出以下关于Objective-C编程语言的知识点,这些知识点将覆盖从Objective-C的基础知识到高级特性,以及如何在iOS移动开发中使用Objective-C: 1. Objective-C简介 Objective-C是一种面向...
随着技术的发展和社区的支持,Objective-C未来可能会继续作为一种辅助语言存在,特别是在一些复杂度较高、性能要求严格的项目中。 - **社区支持**: 目前仍有大量的开源库和框架使用Objective-C编写,这些资源将继续...
4. **C语言兼容**:与C语言高度兼容,几乎所有的C代码可以直接在Objective-C中使用。 5. **Foundation框架**:通常与苹果的Foundation框架一起使用,后者提供了一系列高级API,包括文件处理、网络通信和数据存储等...
在Objective-C中,还包含了一些特殊的值,如nil、Nil、YES和NO,这些与C++中的NULL或布尔值true和false不完全相同,需要特别注意。Objective-C同样支持C++中的注释风格(// 和 /*...*/),但其变量声明位置较为灵活...
2. **系统级编程**:由于Objective-C与C语言的兼容性,它也被用于开发一些对性能有较高要求的系统级应用或库。 3. **跨平台开发**:虽然Objective-C主要用于苹果平台的开发,但也有第三方工具如Cocoa Touch用于在...
首先,Objective-C是在C语言的基础上扩展的,因此,理解C语言的基本语法是学习Objective-C的前提。它引入了消息传递机制,这是Objective-C的关键特性,允许对象之间进行通信。消息传递类似于函数调用,但更加灵活,...
此外,Objective-C还支持.mm文件类型,允许在Objective-C代码中混合使用C++代码,这对于需要高性能计算的场景非常有用。 #### 示例代码分析 在Objective-C中定义一个类,如MyClass,通常包含以下结构: 1. **类的...
Objective-C是一种强大的面向对象编程语言,...以上就是“objective-c的计算器”项目中涉及的一些核心知识点。通过实践这个项目,开发者不仅可以巩固Objective-C的基础,还能对面向对象编程和iOS开发有更深入的理解。
- **Objective-C** 使用`@`符号来标识关键字,以避免与C语言的关键字冲突。例如,`@interface`, `@implementation`, `@class`等。 - **C++** 引入了新的关键字如`class`来定义类,以及一系列模板和泛型编程的语法...
Objective-C2.0是苹果公司开发的一种面向对象的编程语言,它是C语言的超集,融合了Smalltalk的动态特性,广泛应用于iOS和Mac OS X操作系统。本资料集中的"Objective-C2.0程序设计习题官方答案"显然是针对学习...
在Objective-C中,定义类需要使用@interface和@implementation关键字。@interface部分声明了类的接口,包括类名、属性和方法。而@implementation部分则提供了方法的实现。通过继承,Objective-C的类可以继承其他类的...
例如,Objective-C中的类定义使用`@interface`和`@end`关键字,而实例方法使用消息传递的方式调用。相反,C++使用`class`关键字来定义类,并且对象调用成员函数的方式更为直接。 **面向对象特性**:尽管两者都是...