3
我正在开发一个带有最新SDK和XCode 4.2的iOs 4应用程序。我有一个关于NSString参数的问题。这是我的类定义:复制或保留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仅自动添加保留和发布)。另外,'NSDate'实现'NSCopying',所以它也应该发送'-copy'。 – JeremyP 2012-03-14 11:41:19
概括 - 任何实现'NSCopying'的应该是'copy'语义。然而,我使用经验法则'如果它有一个可变的子类,复制它'。 – deanWombourne 2012-03-14 12:24:26