复制或保留NSString参数?

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

我有一个关于NSString参数的问题。 这是我的class级定义:

#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参数吗? 或者,我可能需要复制它们吗?

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

对于NSString ivars,通常是copy 。 对于NSDate伊娃, retain 。 使用NSString进行copy的原因是在init方法中传递了NSMutableString 。 复制参数可以防止它被你的类所改变。 因此,它确保封装。