简单演示对象间通过BLOCK回调修改属性的功能
来源:互联网 发布:数据库nvl 编辑:程序博客网 时间:2024/05/19 06:50
//// ObjectA.h#import <Foundation/Foundation.h>/* 定义一个BLOCK,用于ObjectB的回调 */typedef void (^ObjAblock) (NSString *str);@interface ObjectA : NSObject@property (nonatomic, copy) NSString * name;/* BLOCK用于修改属性name */@property (nonatomic, copy) ObjAblock blockChangeName;@end
//// ObjectA.m#import "ObjectA.h"@implementation ObjectA@end
//// ObjectB.h#import <Foundation/Foundation.h>#import "ObjectA.h"@interface ObjectB : NSObject/* 引入ObjectA对象,目的在于回调ObjectA的块 */@property (nonatomic, strong) ObjectA * objA;/* 设置ObjectA的name属性 */- (void) setObjectAName: (NSString *) newName;@end
//// ObjectB.m#import "ObjectB.h"@implementation ObjectB- (void) setObjectAName: (NSString *) newName{ /* 调用回调函数修改ObjectA的属性 */ self.objA.blockChangeName(newName);}@end
//// main.m/* 测试BLOCK的回调功能: ObjectA中定义属性name,同时该对象有个BLOCK,可以修改该name. 在ObjectB中定义一个ObjectA属性,间接调用ObjectA的BLOCK,修改ObjectA的属性name。 */#import <Foundation/Foundation.h>#import "ObjectA.h"#import "ObjectB.h"int main(int argc, const char * argv[]) { @autoreleasepool { ObjectA *objA = [[ObjectA alloc] init]; objA.name = @"prison break"; /* BLOCK中的对象设置为__block属性 */ __block ObjectA *tempObjA = objA; objA.blockChangeName = ^(NSString *str) { tempObjA.name = str; }; /* 注意有个分号 */ NSLog(@"orig:%@", objA.name); ObjectB *objB = [[ObjectB alloc] init]; objB.objA = objA; [objB setObjectAName: @"heroes"]; NSLog(@"changed:%@", objA.name); } return 0;}
输出:
2015-12-06 21:42:42.527 TestBlockFeedback[396:4896] orig:prison break2015-12-06 21:42:42.528 TestBlockFeedback[396:4896] changed:heroes
0 0
- 简单演示对象间通过BLOCK回调修改属性的功能
- 简单演示BLOCK的基本使用方法
- Java GUI 简单抽奖演示,可以自行修改功能,Timer类的使用
- 二、功能简单演示
- block回调的简单实现
- Block 简单的回调步骤
- JS通过.style.属性修改对象样式的可行度分析
- 通过js修改html的标签属性
- JAVA对象及属性的内存堆栈管理(通过小程序简单说明)
- HTML5的功能演示
- VB面向对象编程的一个简单的演示程序
- 简单演示不同对象间的消息发送和接收(广播消息中心)
- JAVA之1.封装一类三角形对象Triangle,该类对象具有三条边的属性,具有初始化三角形的功能、修改边长的功能、判断三条边能否构成三角形的功能、求周长的功能、求面积的功能。
- 通过WCF实现简单的聊天功能
- 安卓修改对象的属性
- 四、ObjectARX 修改对象的属性
- js如何修改对象的padding属性
- iOS 【transform属性】-通过tramsform熟悉个可以修改对象的平移、缩放比例和旋转角度
- C++ 实现Huffman编译码器
- IOS 关键字self,super,copy, retain, assign , readonly , readwrite, nonatomic、@synthesize、@property、@dyna
- mysql输入中文乱码怎么解决
- uva 147 - Dollars 钱币兑换问题(浮点数) 精度问题 完全背包
- 关于子类对象生成的问题(抽空展开写一下)
- 简单演示对象间通过BLOCK回调修改属性的功能
- 【Html】CSS注释代码
- 剑指offer系列之十四:反转链表
- activity_main.xml不能预览问题
- 本文为原创文章,转载请标明出处
- std::array
- poj 1140 Expanding Fractions 除法模拟
- Centos6.764位 安装apache
- linux 下mysql 主从数据库