我想要一个Class类型的ivar,传进去之后指针一直在身边。但是不管我怎么做,arc都不让我这么做。例如,如果我声明
@property (nonatomic, strong) Class myClass;
编译器决定 myClass 应该是 unsafe_unretained。如果我尝试这样做:
-(id) initWithClass: (Class) passedInClass {
if ((self = [super init])) {
self.myClass = passedInClass;
}
return self;
}
发生的情况是,即使类在调用代码中不是 nil,它在 init 方法中也是 nil。
除了关闭电弧,有什么办法可以解决这个问题吗?
编辑:这个问题是错误的。它确实有效。查看已接受的答案。
最佳答案
与针对 10.7 和 5.1 的 Xcode 4.3.2 一起工作:
@interface MOYNObject : NSObject
@property (nonatomic, strong, readwrite) Class myClass;
@end
@implementation MOYNObject
@synthesize myClass;
- (id)initWithClass:(id)pClass
{
self = [super init];
if (self != nil)
self.myClass = pClass;
assert(self.myClass);
CFShow((__bridge const void*)self.myClass);
return self;
}
@end
int main(int argc, const char* argv[]) {
@autoreleasepool {
MOYNObject * o = [[MOYNObject alloc] initWithClass:[NSString class]];
// ...
}
return 0;
}
你是领先还是落后于 4.3.2?
关于objective-c - Objective C arc——保留对类的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10326440/