2013-05-28 56 views

回答

3
@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; 

参见:http://amattn.com/2011/12/07/arc_best_practices.html

和:assign properties, ARC and Core Foundation objects

+0

由于CF对象不是m ARC应该在dealloc方法中照顾它们。通常在ARC下,你不需要实现dealloc,但是需要CF对象。 – uchuugaka

+0

@Marcel你好,马塞尔。你的意思是说“转让”是一样的吗? –

+0

@uchuugaka是的,我知道我应该在dealloc方法中使用CFRelease()作为CF对象,但是没有调用[super dealloc];谢谢你的解释。但是,我很困惑,我应该采取哪些方式。 NO.1 \ @interface MyClass { CFStringRef myStringRef; } No.2 \ @Property(nonatomic)CFStringRef stringRef; –

相关问题