`
zjjzmw1
  • 浏览: 1372921 次
  • 性别: Icon_minigender_1
  • 来自: 开封
社区版块
存档分类
最新评论

@synthesize和@dynamic的区别是什么?

    博客分类:
  • iOS
阅读更多

@synthesize和@dynamic的区别是什么?

//////////MutableArray ,delegate.
@synthesize 是系统自动生成getter和setter属性声明
@dynamic 是开发者自已提供相应的属性声明
@dynamic 意思是由开发人员提供相应的代码:对于只读属性需要提供 setter,对于读写属性需要提供 setter 和 getter。@synthesize 意思是,除非开发人员已经做了,否则由编译器生成相应的代码,以满足属性声明。

@dynamic 意思是由开发人员提供相应的代码:对于只读属性需要提供 setter,对于读写属性需要提供 setter 和 getter。
@synthesize 意思是,除非开发人员已经做了,否则由编译器生成相应的代码,以满足属性声明。

查阅了一些资料确定@dynamic的意思是告诉编译器,属性的获取与赋值方法由用户自己实现, 不自动生成。
@dynamic just tells the compiler that the getter and setter methods are implemented not by the class itself but somewhere else (like the superclass)

#import "NSMutableArray+DaoXu.h"

@implementation NSMutableArray (DaoXu)
@dynamic name;
-(void)daoXu{
NSMutableArray *array=[NSMutableArray arrayWithObjects:@"zhang",@"ming",@"wei",nil];
unsigned long c=array.count;
for (int i=(int)c-1; i>=0; i--) {
NSLog(@"array==%@",[array objectAtIndex:i]);
}
NSLog(@"%lu,,",c);
}
@end


{

if(self.delegate && [self.delegate conformsToProtocol:@protocol(SalerProtocol) ])
{
[self.delegate saleSomthing:self.house];
}
else
{
NSLog(@"没人帮我卖:%@,我自己不想麻烦!",self.house);
}
}

分享到:
评论

相关推荐

    2020面试题精选.pdf

    3. **@synthesize和@dynamic** - `@synthesize`是自动为属性生成getter和setter的方法,而在需要在运行时动态创建存取方法时,可以使用`@dynamic`。 4. **常用的开发工具** - **Instruments**:性能分析工具,...

    ios_assign,retain和copy详解

    最后,@synthesize和@dynamic关键字用于编译器生成属性的getter和setter方法。@synthesize告诉编译器自动为属性生成对应的成员变量和存取方法。如果我们使用@synthesize配合@property,那么编译器会帮我们实现这些...

    150道精选iOS面试题1

    3. **@synthesize和@dynamic** - `@synthesize`是Objective-C中的关键字,用于自动为属性生成getter和setter方法。 - `@dynamic`表明属性的getter和setter将在运行时动态创建,通常用于CoreData或其他需要运行时...

    iOS编码规范

    3. @synthesize和@dynamic指令应在类实现的最上方,并且每个声明占据一行,这有助于代码的整洁和维护。 4. 使用协议时,添加#pragma mark进行区分,使协议相关的代码更易识别。 5. 在dealloc方法中,正确释放对象并...

    iOS getter setter方法

    在Objective-C中,自定义getter和setter可以通过`@synthesize`关键字实现,但现在通常由`@dynamic`处理,因为它们在运行时动态生成。自定义行为通常用于添加数据验证、触发通知或其他副作用: ```objc @synthesize ...

    ios面试宝典

    在Objective-C中,`@synthesize`和`@dynamic`是两种不同的属性实现方式: 1. **`@synthesize`** 使用`@synthesize`指令可以告诉编译器在编译期间自动为属性生成getter和setter方法。这是一种快速简便的方法。 2....

    Objective-C 2.0 with Cocoa Foundation--- 4,继承

    `@synthesize`指令用于自动生成存取器方法(setter和getter),而`@dynamic`表明属性将在运行时动态解析。在子类中,如果父类声明了`@dynamic`属性,子类也必须如此,因为编译器不会为这些属性生成存取器。 ### KVO...

    2017年5月iOS招人心得(附面试题) - 简书1

    4. **属性关键字(@dynamic, @synthesize)**:@dynamic表示方法在运行时动态实现;@synthesize自动为属性生成getter和setter方法。 5. **KVO(Key-Value Observing)**:KVO是一种观察者模式,可以监听对象属性的...

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

    - **@dynamic**:声明属性的getter和setter方法将在运行时动态解析。 #### 三、Objective-C与C++的对比 **3.1 面向对象的实现方式** - **Objective-C**:采用基于消息传递的模型,所有的操作都是通过向对象发送...

    iOS面试题

    - **@dynamic**:告诉编译器属性的getter和setter方法将由程序员手动实现,编译器不再自动生成这些方法。这种方式可以提供更大的灵活性,但也要求开发者必须正确实现这些方法。 #### 6. OC对象的`isa`指针 - `isa`...

    Objective-C2.0基础教程课后 答案

    在学习Objective-C2.0的过程中,理解Objective-C的语法特性也很关键,例如动态类型(Dynamic Typing)、关键字@import、@class、@interface、@implementation、@property、@synthesize等的用法。同时,学习如何使用...

    2019面试题整理(76).pdf

    二者有什么区别和联系?** - **线程**:是程序执行的最小单位,同一进程中可以有多个线程共享内存资源。 - **进程**:是正在运行的程序实例,拥有独立的内存空间和其他资源。 - **区别**:每个进程都有独立的...

    从C++到 Objective-c

    此外,Objective-C 2.0还引入了新的关键字,如`@optional`, `@required`, `@property`, `@dynamic`, `@synthesize`等,用于简化属性的定义和实现。 #### 四、Objective-C的语法特色 ##### 1. 方法调用 - Objective...

    Object-C的语法与Cocoa框架_V1.0_ios_base32u_

    6. **关键字**: `@interface`, `@implementation`, `@property`, `@synthesize`, `@class`, `@protocol`等是Object-C特有的关键字,用于定义类、实现方法、声明属性等。 **二、Cocoa框架** Cocoa是Apple开发的一...

    iOS Objective-C 编码规文档

    鼓励使用自动合成(auto-synthesis),若需手动合成`@synthesize`或`@dynamic`,应在实现文件中每条声明独占一行。 6. **冒号对齐**: 虽然有些人认为对齐冒号可以使代码更易读,但Objective-C中的方法调用可能会...

    object-c基础教程

    4. **实例变量(Instance Variables)**:用`@property`和`@synthesize`声明并生成访问器方法。 5. **方法声明和实现**:使用`-`(实例方法)和`+`(类方法)前缀。 6. **协议声明**:`@protocol`关键字定义协议,...

    IOS代码规范完全版

    3. **访问控制**:对外部不可修改的属性使用`readonly`,字符串使用`copy`而非`retain`,CFType使用`@dynamic`,通常避免`@synthesize`,除非必要,使用`nonatomic`。 4. **空格**:使用空格进行缩进,每个级别的...

    OC 基础 继承Demol.zip

    如果子类需要覆盖父类的属性,可以使用`@dynamic`或`@synthesize`关键字来实现。同时,子类也可以添加自己的属性。 4. **方法继承** 类不仅可以继承属性,还可以继承方法。子类可以调用父类的实例方法和类方法,...

    简单的 Objective-C 计算器类

    Objective-C 是苹果公司为其操作系统(包括 macOS 和 iOS)开发的一种面向对象的编程语言。这个"简单的 Objective-C 计算器类"示例旨在教授初学者如何在 Objective-C 中创建一个基本的计算功能。通过理解这个类,...

Global site tag (gtag.js) - Google Analytics