0
一般来说,我们delare属性是这样的:我想为CFStringRef声明一个属性,我该怎么办?
@Property (nonatomic, retain) NSString * string;
@property (nonatomic, assign) NSInteger number;
但如果我要声明一个CF对象,我该怎么办? 在ARC下它是一样的吗?
一般来说,我们delare属性是这样的:我想为CFStringRef声明一个属性,我该怎么办?
@Property (nonatomic, retain) NSString * string;
@property (nonatomic, assign) NSInteger number;
但如果我要声明一个CF对象,我该怎么办? 在ARC下它是一样的吗?
@property(nonatomic, strong) __attribute__((NSObject)) CFStringRef myString;
这样ARC就会为你做所有的工作。
因为存在的NSString和CFStringRef之间tollfree桥,你也可以这样做:
@property (nonatomic, strong) NSString *myString;
,并设置有CFStringRef的属性时:
CFStringRef myStringRef = CFSTR("Hello!");
myObject.myString = (__bridge_transfer NSString *)myStringRef;
由于CF对象不是m ARC应该在dealloc方法中照顾它们。通常在ARC下,你不需要实现dealloc,但是需要CF对象。 – uchuugaka
@Marcel你好,马塞尔。你的意思是说“转让”是一样的吗? –
@uchuugaka是的,我知道我应该在dealloc方法中使用CFRelease()作为CF对象,但是没有调用[super dealloc];谢谢你的解释。但是,我很困惑,我应该采取哪些方式。 NO.1 \ @interface MyClass { CFStringRef myStringRef; } No.2 \ @Property(nonatomic)CFStringRef stringRef; –