2009-04-30 46 views
31

Là một người mới đến phát triển iPhone và Objective-C nói chung trong vài tuần qua, tôi đã đi qua rất nhiều đề cập đến 'cầu nối miễn phí' giữa khung CF và NS.Cầu miễn phí

Một ví dụ cụ thể sẽ là CFStream và NSStream.

Tài nguyên có tồn tại ghi lại tất cả các cây cầu này và cách sử dụng chúng không? Nó đơn giản như đúc từ vật thể này sang kiểu khác?

Tôi yêu cầu tại thời điểm tôi đang sử dụng các cuộc gọi NSStream không được cho phép chặt chẽ trong SDK iPhone và hiểu rằng tôi nên sử dụng cuộc gọi CFStream.

EDIT: Một bài báo hữu ích về how TFB works

+2

Có một bài đăng trên blog tuyệt vời về chủ đề này. Hãy xem http://ridiculousfish.com/blog/archives/2006/09/09/bridge/ Tôi rất lo lắng về việc bắc cầu miễn phí cho đến khi tôi hiểu nó tốt hơn. – Mark

Trả lời

37

cầu nối Toll-free có nghĩa là các cấu trúc dữ liệu là hoán đổi cho nhau. Nó chỉ đơn giản như đúc - đó là phần "miễn phí". Bất cứ nơi nào bạn có thể sử dụng các loại trên một bên của cây cầu, bạn có thể sử dụng khác. Vì vậy, ví dụ, bạn có thể tạo một CFString và sau đó gửi tin nhắn NSString cho nó, hoặc bạn có thể tạo một NSArray và chuyển mảng vào các hàm CFArray.

Apple giữ list of the supported toll-free bridged types trên trang web của mình.

+1

Cập nhật liên kết tới [loại dữ liệu cầu nối miễn phí] (http://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFDesignConcepts/Articles/tollFreeBridgedTypes.html#//apple_ref/doc/uid/20002401 -767858) – 0xced

+0

thú vị. họ không liệt kê 'CFNullRef' và' NSNull' – user102008

+0

@ user102008: Vâng, không có đầu mối tại sao họ dường như quá miễn cưỡng để thừa nhận hai điều đó. Họ đã được bắc cầu kể từ khi AFAIK giới thiệu CFNull. – Chuck

4

Toll-free-bridging, mặc dù tên hài hước, là một tính năng rất thú vị của các lớp CoreFoundation. Về cơ bản nó tóm tắt thực tế là bạn có thể đúc giữa các lớp CoreFoundation và NextStep cùng tên (CFString < -> NSString, CFData < -> NSData, CFDictionary < -> NSDictionary ... chỉ để đặt tên cho một số loại thường được sử dụng nhất .)

| K <