@property declaration 属性
为实例变量指定属性(attributes)的途径, 可让编译好器生成 无泄漏和线程安全的访问实例变量的方法.
@property 就是对应的编译器指令
声明一个与数据成员同名的属性来省去读写函数的声明
@interface Application
{
unsigned int root_port;
unsigned int notifier;
UIWindow *window;
MainView *mainView;
}
- (void)applicationDidFinishLaunching:(id)arg1;
- (void)applicationWillSuspend;
- (void)dealloc;
@property(retain) UIView *mainView; // @synthesize mainView;
@property(retain) UIWindow *window; // @synthesize window;
@end
声明property的语法为:
@property (参数) 类型 名字;
这里的参数主要分为三类:
读写属性: (readwrite/readonly)
setter语意:(assign/retain/copy)
原子性: (atomicity(nonatomic)
assign/retain/copy 决定了以何种方式对数据成员赋予新值
atomicity的默认值是atomic,读取函数为原子操作。
经常用到的参数是 copy/reain/assign。在其中选择一个来确定属性的setter如何处理这个属性。很多Objective-C中的object最好使用用retain,一些特别的object(例如:string)使用copy。
assign关键字代表setter直接赋值,而不是复制或者保留它。这种机制非常适合一些基本类型,比如NSInteger和CGFloat,或者你并不直接拥有的类型,比如delegates。
readonly关键字代表setter不会被生成, 所以它不可以和 copy/retain/assign组合使用。
在实现里,只需要
@synthesize mainView;
@synthesize window;
就可代替 繁琐的setter, getter方法, 这样就 可让编译器自动生成读写函数,定义了property, 使用者,可以 点号(.) 来存取属性了。
分享到:
相关推荐
在Objective-C中,`@property` 是一种声明属性的关键字,它允许你在类接口中定义对象的特性,如可读性、可写性、内存管理策略等。在C++中,我们通过访问限定符(public, protected, private)来控制成员变量的访问...
在实际开发中,Objective-C通常与Cocoa框架一起使用,以便利用其丰富的API来快速构建应用程序。 #### 二、Objective-C的关键概念 **2.1 类的实现** - **类的设计**:Objective-C中的类设计非常灵活,支持单继承,...
作为C语言的一个超集,Objective-C允许开发者直接使用C语言代码。此外,它还借鉴了C++的一些特性,尽管它并非C++的直接子集。 Objective-C由苹果公司在其操作系统macOS和iOS的开发中广泛使用,是这两个平台上应用...
Objective-C是在C语言的基础上扩展了Smalltalk式的面向对象特性,使得它既有C语言的强大功能,又具备了面向对象编程的灵活性。 在Objective-C中,类是所有对象的基础。类定义了一组属性(实例变量)和方法(函数)...
Objective-C中的控制结构与C语言基本一致,包括但不限于if语句、switch语句、循环等。 ##### 2.7 属性(Properties) 属性提供了一种简洁的方式来管理类的实例变量。通过属性,可以轻松地设置和获取类的成员变量。...
### Objective-C语言教程、案例与项目资源详解 #### 一、Objective-C基础知识 **1.1 类与对象** Objective-C的核心概念是类和对象。类是对象的模板或蓝图,它定义了对象应该具备哪些属性(如变量)和行为(如方法...
3. **C语言的超集**:由于Objective-C是C语言的超集,因此可以在Objective-C程序中直接使用C语言的语句和数据类型,这使得Objective-C具有很高的兼容性。 4. **内存管理**:Objective-C早期版本使用引用计数的方式...
在实际开发中,Objective-C通常与Xcode IDE结合使用,通过Interface Builder设计用户界面,并利用Storyboard组织视图控制器的导航流程。Swift的出现虽然在一定程度上替代了Objective-C,但对于现有的大量Objective-C...
4. **属性和ivar**:Objective-C中的属性提供了封装、访问控制和自动内存管理。使用`@property`关键字声明属性,`@synthesize`来生成存取方法,或者自定义getter和setter。ivar(实例变量)存储对象的状态,通常以下...
Objective-C是一种强大的面向对象编程语言,特别是在Apple的iOS和macOS平台上广泛使用。它是C语言的超集,融入了Smalltalk的关键概念,如消息传递和动态类型。《Learn Objective-C on the Mac》由Mark Dalrymple撰写...
下面我们将深入探讨Objective-C的核心概念、函数使用以及实例代码在学习过程中的重要性。 1. **Objective-C基础**: - **消息传递机制**:Objective-C的关键特性是它的消息传递系统,类似于其他语言中的方法调用。...
在Objective-C中,类通过@interface和@implementation来定义,属性通过@property声明,方法通过-(return_type)selector:(参数类型)parameters;定义。 其次,Objective-C中的消息传递是其核心特性。与其他语言不同,...
- **继承**:详细讨论了继承的机制以及如何在Objective-C中使用继承来构建类层次结构。 - **访问控制**:Objective-C提供了三种访问级别:`public`、`protected`和`private`,用于控制类成员的可见性。 #### 类别...
2. **属性(Property)**:在Objective-C中,属性用来封装数据。`FractionDemo`类可能有` numerator`和`denominator`两个属性,分别代表分数的分子和分母,它们可能是`@property`关键字声明的。 3. **初始化方法**...
此外,Objective-C还支持.mm文件类型,允许在Objective-C代码中混合使用C++代码,这对于需要高性能计算的场景非常有用。 #### 示例代码分析 在Objective-C中定义一个类,如MyClass,通常包含以下结构: 1. **类的...
首先,Objective-C是一种主要在苹果公司产品开发中使用的编程语言,被视为MacOSX和iOS平台上的“唯一”开发语言。Objective-C的开发教程很多直接从该语言基础讲起,但作者DevBean认为对于有其他编程语言基础的开发者...
- **与C语言兼容:** Objective-C保留了C语言的所有特性,并在此基础上进行了扩展,因此可以轻松地在Objective-C代码中使用C语言编写的库或代码。 #### 二、Objective-C语言的基础语法 **1. 类与对象** 在...
Objective-C是在C语言的基础上扩展的,因此,它继承了C的语法特性,如变量声明、控制结构(如if-else、for、while)、函数等。同时,它引入了消息传递机制,这是面向对象编程的核心。在Objective-C中,对象通过发送...