博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS私有属性的访问与修改
阅读量:5990 次
发布时间:2019-06-20

本文共 1459 字,大约阅读时间需要 4 分钟。

  hot3.png

// Son.m#import "Son.h"@interface Son ()// 将属性放在.m文件中,使之成为私有属性@property (nonatomic, copy) NSString *name;@end
// Father.m#import "Father.h"#import "Son.h"#import 
@implementation Father#pragma mark - KVC 方式访问和修改私有变量- (void)printSonNameWithKVC{ Son *son = [[Son alloc] init]; // 修改前 NSString *name = [son valueForKey:@"name"]; NSLog(@"-name:%@", name); // 修改后 [son setValue:@"Jabit" forKey:@"name"]; NSString *nameReset = [son valueForKey:@"name"]; NSLog(@"-nameReset:%@", nameReset);}#pragma mark - Runtime 方式访问和修改私有变量- (void)printSonNameWithRuntime{ Son *son = [[Son alloc] init]; unsigned int count = 0; Ivar *members = class_copyIvarList([Son class], &count); for (int i = 0; i < count; i++) { Ivar ivar = members[i]; const char *memberName = ivar_getName(ivar); const char *memberType = ivar_getTypeEncoding(ivar); //依次打印属性名称和属性类型 NSLog(@"%s : %s", memberName, memberType); if (strcmp(memberName, "_name") == 0) { // 修改前 NSString *name = (NSString *)object_getIvar(son, members[i]); NSLog(@"-name:%@", name); // 修改后 object_setIvar(son, members[i], @"Jabit"); NSString *nameReset = (NSString *)object_getIvar(son, members[i]); NSLog(@"-nameReset:%@", nameReset); break; } }}@end

转载于:https://my.oschina.net/Jacedy/blog/891825

你可能感兴趣的文章
Nginx负载均衡 大全
查看>>
运维管理平台 基于jumperserver 二次开发
查看>>
rsync 错误与解决方案收集 .
查看>>
html本地存储
查看>>
Exchange 2013与OWA13集成
查看>>
分页原理4
查看>>
网络传输安全SSL/TLS
查看>>
P2P控制流量教程
查看>>
OTNM200客户端安装
查看>>
我的友情链接
查看>>
iOS开发tableView去掉顶部上部空表区域
查看>>
windows常用快捷键
查看>>
CentOS (RHEL) 系统管理中的查看内存插槽数、最大容量和频率
查看>>
安装Mod_Security On Apache2.4(Ubuntu 14.04)
查看>>
线性规划与单纯形法---单纯形法的计算步骤
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
shell实例手册
查看>>
CentOS6.9安装CLI2.0
查看>>
利用ACS Engine创建Kubernetes集群
查看>>