Objective-C中,类方法的getter和setter可以用点运算符吗?
Objective-C中,对象实例property的getter和setter可以使用点运算符来操作,那么类方法的getter和setter可以使用点运算吗?
答案是肯定的。
看如下代码:
#import <Foundation/Foundation.h> static int i = 0; @interface X : NSObject + (int)i; + (void)setI:(int)ii; @end @implementation X + (int)i { return i; } + (void)setI:(int)ii { i = ii; } @end int main() { X.i; X.i= 1; }
类X有对静态变量i操作的getter和setter类方法,使用clang -rewrite-objc命令将代码重写为c++查看:
int main() { ((int (*)(id, SEL))(void *)objc_msgSend)((id)objc_getClass("X"), sel_registerName("i")); ((void (*)(id, SEL, int))(void *)objc_msgSend)((id)objc_getClass("X"), sel_registerName("setI:"), 1); }
通过代码可以发现,main函数里面对静态setter和getter方法的调用,最终也是转换成了objc_msgSend的调用;并且对i进行设值得方法,最终转换成了调用setI方法。
分类:
Objective-C
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了