作为Objective-C的新手,有人可以按照@property指令给我一个概述保留,分配,复制和我缺少的任何其他内容吗?他们在做什么,为什么我要用另一个?
所以,只是一个简单的问题,我何时应该使用copy而不是使用retain.我试图从互联网上看,但没有得到它.有人可以照亮我吗?
保留和复制有什么区别?它对引用计数的意义是什么?
我知道当使用alloc/retain分配对象时,引用计数会增加1.那么使用副本怎么样?
与此相关的另一个问题是,使用
@property(非原子,保留)和@property(非原子,复制)之间的区别?
我已经为iphone启动了一款基于2d平铺的游戏,我将直接跳到我的课程和问题.我现在完全有2级Tile,Table和Base主类Tile
`@interface Tile : NSObject {
CCSprite *sprite;
CCSprite *outline;
int row,column;
BOOL highLight;
}
@property (nonatomic , retain)CCSprite *sprite;
@property (nonatomic , retain)CCSprite *outline;
@property (nonatomic, readonly) int row, column;
@property (nonatomic , readwrite)BOOL highLight;
-(id) initWithSpriteName: (NSString*)argSpriteName Row:(int)argRow Column:(int)argColumn Position:(CGPoint)argPosition;
@end`
表
`@interface Table : NSObject {
CCLayer *layer;
CGSize size;
NSArray *icons;
NSMutableArray *content;
}
@property(nonatomic, retain) NSMutableArray *content;
@property(nonatomic, retain) CCLayer *layer;
@property(nonatomic, readonly) CGSize size;
-(id) initWithTableSize:(CGSize)argSize;
-(void)render;
-(Tile *) objectAtX: (int) x Y: (int) …
Run Code Online (Sandbox Code Playgroud) 我试图了解以下四种情况的内存管理之间的区别:
@implementation ABC
-(void) fun1
{
ObjectA * obj1 = [[ObjectA alloc] init];
ObjectA * obj2 = obj1;
}
-(void) fun2
{
ObjectA * obj1 = [[ObjectA alloc] init];
ObjectA * obj2 = [obj1 retain];
}
-(void) fun3
{
ObjectA * obj1 = [[ObjectA alloc] init];
ObjectA * obj2 = [obj1 copy];
}
-(void) fun4
{
ObjectA * obj1 = [[ObjectA alloc] init];
ObjectA * obj2 = [obj1 mutableCopy];
}
@end
Run Code Online (Sandbox Code Playgroud)
我咨询过这个问题,但我仍然不清楚上述每个问题之间的区别.有人可以解释每个人做了什么,以及他们为什么不同?