我正在使用最新的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
参数吗?或者,我可以复制它们吗?
如果是ARC,则否。如果不是ARC,则是。
对于NSString
ivar,通常为copy
。对于NSDate
ivar,retain
。copy
和NSString
的原因是在init
方法中传递NSMutableString
的情况下。复制参数可以防止类对其进行变异。因此,它确保了封装。