iOS:不同属性声明方式的解析
代码:
/* 属性声明方式说明: ----------------------- 1 @interface ... { id name } @end 这样声明的属性其实可以认为是private属性,因为它只能在方法里通过name引用,外部无法通过“object.name”的方式进行引用 (内部也不能通过self引用) ---------------------- 2 @interface ... @property id name @end 这样声明的属性可以认为是public属性,内部通过“self.name”引用;外部通过“object.name”引用 ----------------------- 3 @implementation ... @synthesize name @end 允许以property声明的属性,在内部方法里除了以self引用外,还可以用属性名直接引用 ----------------------- 4 self.name 其实是是两个方法(setter,getter): id value = [self name] [self setName = ...] ----------------------- 5 总结: 如果框架依赖的属性是@property,就不能实现为私有,否则程序可以崩掉 */ #import <Foundation/Foundation.h> @interface Student : NSObject { NSString *name; } @property NSString *address; -(void) toString; @end @implementation Student @synthesize address; -(Student *)init { name = @"lishujun"; self.address = @"beijing"; return self; } -(void) toString { NSLog(@"%@ %@", name, [self address]); } @end int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... Student *student = [[Student alloc]init]; [student toString]; [student setAddress:@"tongzhou"]; [student toString]; NSLog(@"%@", student.address); // 语法错误,没有setName这个方法 //[student setName:@"shujunli"]; //[student toString]; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
2012-09-03 python:easy_install安装第三方库
2012-09-03 应要求写的比较简单的单元测试代码
2012-09-03 [转] 很深刻的文章:特性分支是邪恶的?!(更频繁的合并分支)