复制或保留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
。 复制参数可以防止它被你的类所改变。 因此,它确保封装。