2011-06-03 13 views
1

這是我的代碼:警告在垃圾回收的可可應用程序有關屬性

@interface Object : NSObject { 
@private 
    NSArray *array; 
} 

@property NSArray *array; 

@end 

並在實施中@synthesize。我得到與@property行編譯器警告:

警告:在其上實現NSCopying協議屬性「數組」默認分配屬性未適當與-fobjc-GC [-only]

如果我寫這個房產爲@property (assign) NSArray *array它不會顯示。這是關於什麼的?

回答

2

在你的情況下,你正在創建一個屬性是一個指向對象的指針。分配是默認值,不適用於對象,應聲明爲retaincopy

你的情況,你應該定義你的財產爲:

@property (nonatomic, copy) NSArray *array; 

你可以使用retain代替copy這裏,但也有good reasons to use copy

編輯

要回答的更深層次的問題,你似乎會問 - 有來自可可郵件列表一個look at this thread

您使用的是LLVM編譯器還是gcc?

+0

好吧,所以這取決於'數組'的可變性?正如警告中所述,垃圾回收會如何影響垃圾回收? – 2011-06-03 13:46:03

+0

正如傑爾所說 - 如果你對此有所瞭解,它可以讓你做到這一點。 – Abizern 2011-06-03 13:54:18

+0

我明白,但_why_只有在使用垃圾回收時纔會警告我?我只是想了解爲什麼有人在那裏發出這個警告;) – 2011-06-03 14:01:41

0

屬性默認爲分配。你的財產是一個分配。

+0

我知道,但爲什麼會顯示警告呢? – 2011-06-03 13:35:41

+0

因爲你必須明確它 – jer 2011-06-03 13:36:22