我想在ObjC中通过引用传递。 以下是该场景的说明:
// MainClass.h
@interface MainClass
{
Board *board;
OtherClass *other;
}
@end
// MainClass.m
@implementation MainClass
- (id)init
{
if (self = [super init])
{
board = [[Board alloc] init];
other = [[OtherClass alloc] initOtherClassWithBoard: board];
}
return self
}
@end
// Other class.h
@interface OtherClass
{
Board *refBoard;
}
- (void)initOtherClassWithBoard: (Board*)ref;
@end
@implementation OtherClass
- (id)initOtherClassWithBoard: (Board*)ref
{
if (self = [super init])
{
refBoard = ref;
}
return self;
}
@end
所以我的问题是我的OtherClass是否持有MainClass的参考板? 或者OtherClass的董事会是副本,但不是参考。 如果我想做一个参考,那我该怎么改呢?
编辑: 如果我在两个类上添加它
,该怎么办?@property (nonatomic, retain) Board *board;
答案 0 :(得分:2)
这是一个参考。它不会是副本,除非您执行某些操作以使其成为副本(例如使用@property (copy)
或发送copy
消息)。
答案 1 :(得分:2)
你总是通过指针,a.k.a。引用来引用Objective-C中的对象。因此,对象始终通过Objective-C中的引用传递。