第 14 周 周报

  • 本周学习的内容
  • 继承
  • 多态
  • 协议
  • 本周分享的知识点
  • @property 与 @synthesize
  • 问题
  • 暂无
  • 下周计划
  • 学习Foundation框架

@synthesize@property的作用

@property 关键字
是OC中能够快速的定义一个属性的方式,可自动生成 getter 和 setter 方法,是一种编辑器功能(预编译指令)
@synthesize 关键字
表示创建了该属性的访问代码,即可以对属性名称进行修改,同上是一种编辑器功能(预编译指令)

@property(atomic,retain,readwrite) NSString *name; 

在4.4版本以上@property NString *name; 这句话完成了3个功能:

  1. 生成_name成员变量的getset方法的声明;
  2. 生成_name成员变量setget方法的实现;
  3. 生成一个_name的成员变量。
    注意:这种方式生成的成员变量是 private 的。

参数

1、第一个位置的值:
atomic:线程保护的,默认
nonatomic:线程不保护的
2、第二个位置的值:
assign:直接赋值,默认
retain:保留对象,内部会自动调用retain方法,引用计数+1
copy:拷贝对象
3、第三个位置的值:
readwrite:生成get/set方法,默认
readonly:只生成get方法

代码实例

#import <Foundation/Foundation.h>

@interface pro : NSObject
{
    NSString *_name;
}
@property NSString *name;
//等价于下面的代码
//- (void) setName:(NSString *)name;
//- (NSString *)name;
@end

@implementation pro
//在Xcode 4.4 版本以上可省略 @synthesize
@synthesize name = _name;
//等价于下面的代码
//- (void) setName:(NSString *)name
//{
//    _name = name;
//}
//- (NSString *) name
//{
//    return _name;
//}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
         pro *f = [[pro alloc] init];
        //方法1
        [f setName:@"Hello world!"];
        NSLog(@"%@", [f name]);
        //方法2
        f.name = @"Bye bye!";
        NSLog(@"%@", f.name);
    }
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 重点掌握 3 类对象和方法 对象就是一个物体 类的独特存在就是一个实例,对实例进行操作叫做方法。方法可以应用于类或...
    Coder大雄阅读 5,049评论 0 2
  • 这是我最喜欢最想写的故事,希望耐心看完。 这是我第一次遇见余若,却感觉像是久别重逢。 “你好,我是庄语年。记者。您...
    按快门的弗洛二德阅读 3,968评论 3 6
  • 昨日 猛烈的太阳 还在趾高气昂 路边的树叶还是 春天的模样 翠绿如画 那株淘气的藤花 似乎忘了季节 再开一遍 哦,...
    花好月圆_c576阅读 3,229评论 15 26
  • 感恩顾客的光临,她自己动手品尝我们的菜,觉察到自己的评判:不讲卫生,没有经过我的同意就拿起来吃,不舒服的感觉升起,...
    骞卉阅读 1,180评论 0 0
  • 林荫宿鸟归飞急, 小院茶香正浓时。 看罢唐人诗一卷, 夕阳犹恋海棠枝。 注:我等入驻北京首站一一京华商务楼,是一座...
    江德丰阅读 1,445评论 2 5

友情链接更多精彩内容