iphone - 申报属性(property)的最佳方式是什么?

标签 iphone objective-c ios

我们使用@property 关键字声明属性并在实现文件中综合它。我的问题是,

如果我使用@property 关键字声明一个属性,并在接口(interface) block 中声明一个同名变量怎么办?例如,考虑以下代码,

界面:

@interface myClass : NSObject {

    NSString *myClass_name;  // LINE 1
}

@property(nonatomic, retain) NSString *myClass_name;  // LINE 2

@end

执行:
@implementation myClass

@synthesize myClass_name  // LINE 3

@end

在 LINE 1 中声明 myClass_name 会有什么问题吗?像任何引用问题或任何不必要的内存消耗问题?

最佳答案

不,事实上,声明这样的属性是期望的。您可以将您的声明替换为:

@interface MyClass : NSObject {
    NSString *ivar;
}

@property (nonatomic, retain) NSString *myClass_name;

@end

然后将您的实现更改为
@implementation MyClass

@synthesize myClass_name = ivar;

@end

(如果您不指定 = some_ivar,它将假定 ivar 与属性具有相同的名称。)

你总是需要有以下几行:
  • 属性(property)声明(第 2 行)
  • 属性综合(第 3 行)

  • 合成属性时,如果不指定使用哪个ivar(最后使用=ivar),将假定存在与属性同名的ivar。

    关于iphone - 申报属性(property)的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4559852/

    相关文章:

    ios - NSThread 保留计数

    iphone - 如何进行向后搜索以找到第二个空格/空白并将其替换为另一个字符串?

    iphone - 在 iOS 上设置 <select> 输入的第一个选项的样式

    objective-c - 语音开始时自动录音,语音停止时自动播放

    iphone - 重新创建“添加联系人”屏幕

    iphone - 加载到 UIScrollview 中的图像尺寸错误

    iphone - 预填充的数据库。现在我想添加更多数据而不弄乱预先存在的数据

    objective-c - 如何在 FileProviderUI 中创建自定义操作

    iphone - 在条件中设置浮点值

    iphone - iOS 7 上的 UITableView 部分索引间距