4.2OC8-@property和synthesize
例一:
-------------main.m-----------------
//
// main.m
// 构造方法
//
// Created by liuyes on 13-12-8.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Student *stu = [[Student alloc] init];
stu.age = 29;
int age = stu.age;
NSLog(@"age is %i", age);
[stu release];
}
return 0;
}
-------------Student.h-----------------
// Student.h
// 构造方法
//
// Created by liuyes on 13-12-8.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Student : NSObject{
//默认是@protected
int age;
int no;
float height;
}
//当编译器遇到@property时,会自动展开成getter和setter的声明
//- (void)setAge:(int)age;
//- (int)age;
@propertyint age;
@propertyint no;
@propertyfloat height;
@end
-------------Student.m-----------------
//
// Student.m
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import "Student.h"
@implementation Student
@synthesize age;
@synthesize no;
@synthesize height;
@end
例二:
-------------main.m-----------------
//
// main.m
// 构造方法
//
// Created by liuyes on 13-12-8.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Student *stu = [[Student alloc] init];
stu.age = 29;
int age = stu.age;
NSLog(@"age is %i", age);
[stu release];
}
return 0;
}
-------------Student.h-----------------
// Student.h
// 构造方法
//
// Created by liuyes on 13-12-8.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Student : NSObject{
//默认是@protected
int _age;
int _no;
float _height;
}
//当编译器遇到@property时,会自动展开成getter和setter的声明
//- (void)setAge:(int)age;
//- (int)age;
@propertyint age;
@propertyint no;
@propertyfloat height;
@end
-------------Student.m-----------------
//
// Student.m
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import "Student.h"
@implementation Student
@synthesize age = _age;
@synthesize no = _no;
@synthesize height = _height;
@end
例三:
-------------main.m-----------------
-------------Student.h-----------------
-------------Student.m-----------------
相关推荐
相信每个初学者对@property和@synthesize都感到非常的陌生,在此给大家分享下我的自己的理解,有不当之处,还望多多指教。详细说明文章在下面连接http://blog.csdn.net/comeontom/article/details/7455459
### iOS开发中属性property和synthesize详解 #### 一、引言 在iOS开发过程中,`@property` 和 `@synthesize` 是两个非常重要的概念。它们不仅简化了代码编写过程,提高了开发效率,还增强了程序的可维护性。本文将...
@property还可以与@synthesize关键字一起使用,但现代的Xcode版本默认已经为@property声明的属性自动生成了对应的实例变量和存取方法,所以我们通常不再需要显式地使用@synthesize。 此外,@property还支持更多的...
在Objective-C中,`@property` 是一种声明属性的关键字,它允许你在类接口中定义对象的特性,如...理解`@property` 和`@synthesize` 是学习Objective-C的重要部分,因为它们极大地简化了对象属性的管理和内存管理。
在iOS开发中,`@property` 是Objective-C中的一个关键字,用于声明类的实例变量(ivar)并自动合成存取方法(setter和getter)。通过使用`@property`,开发者可以方便地控制实例变量的访问权限、内存管理策略、线程...
@property (nonatomic, retain) NSMutableString *currentResult; @property (nonatomic, retain) NSMutableDictionary *map; @property (nonatomic, retain) NSMutableArray *list; -(NSMutableDictionary *)...
- @synthesize关键字用于手动合成属性的getter和setter方法。 - 使用点语法(self.propertyName)可以调用setter/getter方法,而直接使用实例变量则跳过这些方法。 7. 自定义初始化方法: - @interface中可以...
在iOS开发中,了解`@property`和`ivar`的区别是非常基础且重要的。`@property`和`ivar`都是Objective-C中用于管理类实例变量的方式,但它们在使用上有所差异,提供了不同的功能和灵活性。 首先,`ivar`(实例变量)...
在OC中,我们可以使用`@interface`和`@implementation`来定义和实现类,通过`@property`来声明属性,并使用方法来访问和修改这些属性。例如: ```objc @interface Person : NSObject { NSString *name; NSInteger...
6. @property 和 @synthesize: - `@property` 是 Objective-C 的属性声明,它提供了自动内存管理、存取方法等特性。 - `@synthesize` 通常与 `@property` 一起使用,用于自动生成存取方法的实现。 7. categories...
@synthesize property; @end ``` ##### 2.3 内存管理 - **引用计数**: Objective-C使用引用计数来进行内存管理。 - ** autorelease**: 对象会在适当的时候自动释放。 ```objective-c ClassName *object = [[...
"OC 协议(取值)"这个主题很可能指的是Objective-C中的协议(Protocol)特性和其与属性(Property)取值相关的概念。下面我们将深入探讨这两个核心知识点。 首先,我们来理解Objective-C中的“协议”。协议是...
- **变量声明**:OC中使用`@property`和`@synthesize`来声明和实现属性。 ### 第四章:点语法与括号语法 - **点语法**:OC允许使用`.`操作符访问对象的属性和方法,如`obj.property`。 - **括号语法**:传统方法...
- `@property`定义属性,`@synthesize`自动生成getter和setter方法。 - `@protocol`定义协议,允许类之间约定需要实现的方法。 5. **块(Block)**: - OC中的块是一种内联函数,可以捕获并存储其所在作用域内的...
在iOS开发中,Objective-C语言提供了@property关键字来声明属性,并且可以在属性声明时指定不同的内存管理行为,主要涉及到assign、retain和copy这三个关键字。为了深入理解这三者的区别,首先需要了解Objective-C的...
资源分类:Python库 所属语言:Python 资源全名:synthesize-0.0.1-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
- **Property Declarations**:OC 的属性特性,如 `@property` 和 `@synthesize`,用于封装数据并提供存取方法。 - **Composition**:通过组合多个对象来构建复杂对象,是 OC 中实现 "has a" 关系的重要手段。 ### ...
`@property`关键字用于声明属性,`@synthesize`则自动生成getter和setter方法。 OC的另一个核心特性是消息传递。当我们调用一个方法时,实际上是向对象发送一条消息。例如,`[myObject sayHello];`就向`myObject`...