如何理解哪个属性适合NSDictionary,例如.保留还是分配?

RAG*_*poR 1 iphone properties objective-c nsdictionary ios

现在我用

@property (nonatomic, retain) NSDictionary *currentAttribute;
Run Code Online (Sandbox Code Playgroud)

如果我使用copy或assign而不是retain,那么内存性能会有更大差异吗?

Bol*_*ock 7

声明它copy意味着你得到一个全新的NSDictionary对象供你的班级使用.如果它是一个相当大的字典,这可能会影响性能; 不是很明显,但无论如何都很重要.通过retain它,您只需为您的类提供指向同一NSDictionary实例的指针.

声明它assign会使您的应用程序面临崩溃的风险,以防NSDictionary自动释放.如果它最终在池中并因为池将其保留计数减少到0而被取消分配,则您的类将不再访问它,从而导致崩溃.