NSString và CFStringRef là "Toll miễn phí cầu nối", có nghĩa là bạn có thể chỉ cần gõ giữa chúng.
Ví dụ:
CFStringRef aCFString = (CFStringRef)aNSString;
hoạt động hoàn hảo và minh bạch. Tương tự:
NSString *aNSString = (NSString *)aCFString;
Cú pháp trước là dành cho MRC. Nếu bạn đang sử dụng ARC, cú pháp truyền mới như sau:
NSString *aNSString = (__bridge NSString *)aCFString;
cũng hoạt động. Điều quan trọng cần lưu ý là CoreFoundation sẽ thường trả về các đối tượng với số lượng tham chiếu +1, có nghĩa là chúng cần được giải phóng (tất cả các chức năng định dạng CF [Type] Create đều làm điều này).
Điều tốt đẹp là ở Cocoa bạn có thể sử dụng tự động phát hành một cách an toàn hoặc phát hành để giải phóng chúng.
Nếu bạn đang sử dụng ARC, cú pháp đúc mới cho trường hợp này hiện đang NSString * aNSString = (__bridge NSString *) aCFString – MikeG
Cảm ơn MikeG, tôi đã phải làm tương tự cho việc chuyển đổi ngược lại: NSString * str = @ "abc"; CFStringRef cstrref = (__ cầu CFStringRef) str; – KomodoDave
@NilObject vui lòng cập nhật câu trả lời của bạn để bao gồm ARC để người tìm kiếm không phải kiểm tra nhận xét. Cảm ơn. –