首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Objective-C 101 (保留与分配) NSString

Objective-C 101 (保留与分配) NSString
EN

Stack Overflow用户
提问于 2009-09-04 16:40:18
回答 5查看 66.5K关注 0票数 54

101个问题

假设我正在创建汽车数据库,每个汽车对象的定义如下:

代码语言:javascript
复制
#import <UIKit/UIKit.h>

@interface Car:NSObject{
    NSString *name;
}

@property(nonatomic, retain) NSString *name;

为什么是@property(nonatomic, retain) NSString *name;而不是@property(nonatomic, assign) NSString *name;

我知道assign不会像retain那样增加引用计数器。但是为什么要使用retain,因为nametodo对象的成员,它的作用域是它自己。

其他外部函数也不会修改它。

EN

回答 5

Stack Overflow用户

发布于 2011-01-12 00:23:47

别忘了通过

代码语言:javascript
复制
self.name = something;

因为

代码语言:javascript
复制
name = something;

我不关心生成的setter/getter方法,而是直接赋值。

票数 19
EN

Stack Overflow用户

发布于 2009-09-04 17:09:42

如果没有retain,就不能保证用来设置nameNSString*会比赋值语句本身更长。通过使用合成setter的retain属性,您可以让它告诉内存管理系统,至少还有一个对象需要保留NSString*

票数 12
EN

Stack Overflow用户

发布于 2011-01-12 00:06:06

对于那些正在寻找它的人来说,苹果关于属性的文档是here

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1380338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档