复制还是保留NSString参数?

时间:2012-03-14 11:08:41

标签: objective-c ios cocoa-touch memory-management

我正在使用最新的SDK和XCode 4.2开发iOs 4应用程序

我对NSString参数有疑问。这是我的班级定义:

#import <Foundation/Foundation.h>

@interface BlogEntry : NSObject
{
    NSString* title;
    NSString* text;
    NSDate* date;
    NSString* photo;
}

- (id)initWithTitle:(NSString*)titulo text:(NSString*)texto date:(NSDate*)fecha photo:(NSString*)foto;

@end

并实施:

#import "BlogEntry.h"

@implementation BlogEntry

- (id)initWithTitle:(NSString*)titulo text:(NSString*)texto date:(NSDate*)fecha photo:(NSString*)foto
{
    if (self = [super init])
    {
        title = titulo;
        text = texto;
        date = fecha;
        photo = foto;
    }
    return self;
}

@end

我可能需要保留initWithTitle个参数吗?或者,我可以复制它们吗?

1 个答案:

答案 0 :(得分:4)

如果ARC,没有。如果不是ARC,是的。

对于NSString ivars,通常是copy。对于NSDate ivar,retaincopy NSString NSMutableString的原因是init方法传递了{{1}}。复制参数可防止您的类被其变异。因此,它确保了封装。