`
zsjg13
  • 浏览: 145091 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

1.5 用@synthesize编写Property Assessors

    博客分类:
  • ios
阅读更多

1、问题

自定义类需要表示它所建模的实体的属性。那你就需要知道在Objective-C中如何定义和实现这些属性。如果你不想自己编写getter和setter方法,那你可以用@synthesize。

 

2、解决方案

要用@synthesize来实现properties,你仍然需要在类的接口中声明这些properties,之后在类的实现中实现这些properties。只是,这次不需要写你自己的assessor代码了,而是用@synthesize关键字命令编译器在编译过程中为你插入这样的代码。

 

3、原理

第1个要编写的文件就是头文件

#import <Foundation/Foundation.h>

@interface Car : NSObject

@property(strong) NSString *name;

@end

 

第2个当然就是类的实现文件,此时就用到@synthesize关键字以及将那些你希望生成getters和setters方法的property包含进来,就是放在该关键字的后面。

#import "Car.h"

@implementation Car

@synthesize name;

@end

 

调用:

(1)用dot notation

car.name = @"Sports Car";

NSLog(@"car is %@", car.name);

(2)用标准的Objective-C消息

 

4、代码

Listing 1-7. Car.h 

#import <Foundation/Foundation.h> 

@interface Car : NSObject 

@property(strong) NSString *name; 

@end

=========================================

Listing 1-8. Car.m 

#import "Car.h" 

@implementation Car 

@synthesize name; 

@end

===========================================

Listing 1-9. main.m 

#import "Car.h" 

int main (int argc, const char * argv[]){ 

        @autoreleasepool { 

                Car *car = [[Car alloc] init]; 

                car.name = @"Sports Car"; 

                NSLog(@"car.name is %@", car.name); 

 

                [car setName:@"New Car Name"]; 

                NSLog(@"car.name is %@", [car name]); 

 

        } 

        return 0; 

}

 

分享到:
评论

相关推荐

    Objective-C中的@property和@synthesize用法详解

    相信每个初学者对@property和@synthesize都感到非常的陌生,在此给大家分享下我的自己的理解,有不当之处,还望多多指教。详细说明文章在下面连接http://blog.csdn.net/comeontom/article/details/7455459

    iOS开发中属性 property 和 synthesize 详解

    接下来,我们通过一个具体的例子来展示使用`@property` 和 `@synthesize` 前后代码的变化。 **1. 没有使用 `@property` 和 `@synthesize`** 在没有使用这两个特性的情况下,我们需要手动声明和实现所有的getter和...

    Objective-c解析XML封装

    @property (nonatomic, retain) NSMutableString *currentResult; @property (nonatomic, retain) NSMutableDictionary *map; @property (nonatomic, retain) NSMutableArray *list; -(NSMutableDictionary *)...

    OC-模型的Setter,Getter的由来,@property的由来

    @property还可以与@synthesize关键字一起使用,但现代的Xcode版本默认已经为@property声明的属性自动生成了对应的实例变量和存取方法,所以我们通常不再需要显式地使用@synthesize。 此外,@property还支持更多的...

    IOS开发之@property的详细介绍

    但现在,`@synthesize`通常是自动进行的,除非有特殊需求,一般不需要手动编写。 了解这些基础知识后,开发者可以更好地利用`@property`来设计类的接口,控制内存管理,以及确保代码的线程安全性。在实际项目中,...

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

    这样,虽然没有使用`@synthesize`,但手动定义的方法与使用`@property`和`@synthesize`的效果相同。 此外,还可以使用其他关键字来定制属性行为,如`readonly`、`readwrite`(默认)、`assign`、`strong`(ARC环境...

    Objective-c对象组装XML

    @synthesize objectName; @synthesize lvUp; @synthesize root; @synthesize buildEnd; -(NSData *)objctPackage:(NSMutableDictionary *)object objectName:(NSString *)name xmlTemplateName:(NSString *)...

    ios_assign,retain和copy详解

    如果我们使用@synthesize配合@property,那么编译器会帮我们实现这些方法。如果使用@dynamic,那么我们必须手动实现这些方法。 在使用ARC环境下,开发者不需要直接使用这些关键字,因为ARC会自动管理内存。但在非...

    iOS基础知识之@property 和 Ivar 的区别

    在`@implementation`部分,我们可以使用`@synthesize`来自动创建`ivar`并将其与`@property`关联起来。默认情况下,`@synthesize`会为`name1`创建一个名为`_name1`的`ivar`。然而,我们可以手动指定`ivar`的名字,就...

    StoryboardTest

    在Xcode 4.5之前,当我们声明一个属性时,需要手动使用@synthesize关键字来生成getter和setter方法。但在Xcode 4.5及更高版本中,这个过程已经自动化,系统会默认为每个属性生成对应的存取方法,除非我们明确选择不...

    objective-c小技巧

    1. 使用@property和@synthesize声明一个成员变量,给其赋值是时要在前面加上"self.",以便调用成员变量的setmember方法。 直接调用成员变量并且给其赋值:member=[NSString stringWithFormat:@””];将不执行...

    Objective-C简单继承代码

    Objective-C是一种强大的面向对象编程语言,特别是在iOS和macOS应用开发中广泛使用。在这个场景中,我们关注的是Objective-C中的“继承”概念,这在创建类的层次结构中扮演着核心角色。继承允许一个类(子类或派生类...

    objective-c基础知识

    - `@synthesize` 通常与 `@property` 一起使用,用于自动生成存取方法的实现。 7. categories(分类): - Objective-C 允许通过分类给已有类添加方法,而不需要继承。 8. protocols(协议): - 协议定义了一...

    苹果公司的手机开发语言

    例如,在类定义中使用`@property`声明属性: ```objective-c @interface Photo : NSObject @property (retain) NSString *caption; @property (retain) NSString *photographer; @end ``` `@synthesize`指令会自动...

    iOS编码规范

    而在`.m`实现文件中,空行的使用同样遵循一定的标准,如@implemention与@synthesize之间、方法之间的空行等。在方法内部,空行用于分隔不同功能块,使得代码层次分明。 二、关于空格: 空格的合理使用可以使代码更...

    Object-C基础教程.pdf

    Objective-C提供了`@property`和`@synthesize`关键字来简化实例变量的声明和访问器方法的实现。例如: ```objective-c @interface Person : NSObject @property (nonatomic, strong) NSString *name; @property ...

    iOS getter setter方法

    在Objective-C中,我们通常使用`@property`关键字来声明属性,并自动生成getter和setter。例如: ```objc @property (nonatomic, strong) NSString *name; ``` 这段代码会为`name`属性自动生成getter和setter方法...

Global site tag (gtag.js) - Google Analytics