编程语言书籍解释了在堆栈上创建了值类型,并且在堆上创建了引用类型,而没有解释这两者是什么.我还没有看清楚这个问题.我理解堆栈是什么.但,
language-agnostic heap stack memory-management dynamic-memory-allocation
有由ARC推出性能的两种新的内存管理的属性,strong和weak.
除了copy显然是完全不同的东西之外,vs 和vs 之间有什么区别吗?strongretainweakassign
根据我的理解,这里唯一的区别是weak将分配nil给指针,而assign不会,这意味着程序将在指针释放后向指针发送消息时崩溃.但是,如果我使用weak,这将永远不会发生,因为发送消息nil不会做任何事情.
我不知道strong和之间有什么不同retain.
是否有任何理由为什么我应该使用assign,并retain在新的项目,或者是那种被弃用?
有没有办法在Objective C中声明私有属性?目标是从合成的getter和setter中获益,实现某种内存管理方案,但不暴露给公众.
尝试在类别中声明属性会导致错误:
@interface MyClass : NSObject {
NSArray *_someArray;
}
...
@end
@interface MyClass (private)
@property (nonatomic, retain) NSArray *someArray;
@end
@implementation MyClass (private)
@synthesize someArray = _someArray;
// ^^^ error here: @synthesize not allowed in a category's implementation
@end
@implementation MyClass
...
@end
Run Code Online (Sandbox Code Playgroud)