2011-04-20 27 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位版本。