objective-c - 当我在 Obj-C 中定义一个不带 @property 的成员时,向该成员传递值时的操作是什么?

标签 objective-c ios memory retain

@interface ClassA : UITableViewController {

    NSString *member;
}

@end

成员声明如上。

如果我用

NSString * astring = [[NSString alloc] initWithString:@"???"];
member = astring;

成员会保留字符串吗?

最佳答案

不,它不会保留它。这是实例变量(也称为 iVar)。它不释放旧对象,也不保留新对象(作为 setter 中典型的声明属性)。

//如果属性 self.member = aString;//调用 setter,相当于 [self setMember:aString],释放旧值,并向 aString 发送保留(或复制,取决于属性声明)消息。

如果 iVar member = aString//没有内存管理。

关于objective-c - 当我在 Obj-C 中定义一个不带 @property 的成员时,向该成员传递值时的操作是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11409157/

相关文章:

ios - 如何拆分冗长的 uiviewcontroller 类?

objective-c - dateFromString 返回错误的日期

ios - 我如何将文本和图片发布到 Facebook 新闻提要

iphone - 如何将 UIImageView 裁剪成自定义形状

java - 查找分配给进程的虚拟内存量

iPhone iOS 如何从相机胶卷图像中提取照片元数据和地理标记信息?

ios - -[NSInputStream 读取 :maxLength:] throws an exception saying length is too big, 但它不是

ios - 解析 html NSString

c - 需要帮助理解我的示例的 malloc(0)

java - 类加载与初始化 : Java static final variable