Objective-C 引用实现协议的对象

Objective-C Reference to object that implements protocol

我想创建对实现协议的对象的引用。这是一个示例代码:

@interface TestClass ()
@property id <TestProtocol> testProperty;
@end

@implementation TestClass
+(id)init :(id <TestProtocol> test)
{
    TestClass *testClass = [[TestClass alloc] init]; 
    testClass.testProperty = test;
    return testClass;
}
@end

然后它会创建实现协议或引用的测试对象的副本吗?我想知道,因为没有“*”号。如果它是一个副本,我该如何创建一个引用呢?

类型id是一个指针类型,可以保存指向任何对象的指针。

Objective-C 中没有包含 "object" 本身的类型。只能通过指向对象的指针来使用对象。