2011-04-20 84 views
0

我想这个答案是“不”,但我想确认一下。 Objective C中有很多对象属性的方法吗?每次我设置STR我不得不释放前一个时间简明属性

Foo.h: 

@interface Foo : NSObject { 
    NSString *str; // first line 
} 
@property (copy) NSString *str; // second line 

Foo.m: 

@implementation Foo 
@synthesize str; // third line 

(void) dealloc { 
    [str release]; // fourth line 
    ... 
} 

在另一方面,没有属性,仍然需要释放的dealloc的:如果我使用的属性,我必须写四行只是有一个属性以及。有没有更方便的方法或者XCode4快捷方式来声明属性?

回答

1

如果您愿意使用第三方脚本/服务,David Hoerl最近发布了一个帮助管理实例变量和声明属性的工具。

his announcement

在宣布PropertyMaster Xcode的脚本的1.0版(和Automator服务),以协助的iOS(和在较小程度上,可可)开发转换现有的基于的ivar代码对所有属性,并保持property/viewDidAlloc/dealloc关系。

一旦作为Xcode 3脚本(或作为Xcode 4的服务)安装,您可以选择包含ivars和属性的接口文件,并将任何ivars转换为属性,以便随后删除所有ivars。它将一个大文本块粘贴到剪贴板上,您可以将其粘贴回接口和实现文件,并对其进行排序和分类,包括viewDidUnload和dealloc方法。它还允许您选择并处理包含属性的类扩展,并重新生成合并的Blob。

此外,它具有高度可定制的系统,以确定薄弱的ivars,并产生一个释放前的最后的“关闭”的语句(即,foo.delegate =零,[富释放])

如果通知上的URL不起作用,请尝试this one

1

您可以保存“第一行”,即变量定义(但您必须将“第四行”更改为self.str = nil;)。 Objective-C支持根据需要为您的属性生成隐式变量,但此功能在所有平台上都不可用:它在iOS和Mac 64位版本上可用,但不适用于Mac 32位版本。