2012-06-23 27 views
7

Sự khác biệt giữa strongweak IBOutlets trong Xcode iOS 5.1 SDK là gì?Sự khác biệt giữa IBOutlets mạnh và yếu

Trước đây tôi đã sử dụng SDK 4.3, nơi không có IBOutlets mạnh. Ngoài ra, bản phát hành (tự động) không có sẵn trong SDK iOS 5.1.

+0

Bạn không thể so sánh mạnh mẽ và nonatomic. Tôi nghĩ bạn có nghĩa là sự khác biệt giữa mạnh và yếu. Bạn đã cố gắng đọc điều gì đó về nó trong tài liệu của Apple chưa? – dasdom

+0

@dasdom ok các khác biệt tham chiếu yếu và mạnh hướng dẫn tôi hoặc bất kỳ liên kết tài liệu nào – Dinesh

+0

Tự động phát hành và phát hành có sẵn trong iOS 5 nếu bạn tắt ARC. ARC là một tính năng có thể được bật hoặc tắt. – borrrden

Trả lời

10

Strong có nghĩa là miễn là thuộc tính này trỏ đến một đối tượng, đối tượng đó sẽ không được tự động phát hành. Trong phi ARC đó là một từ đồng nghĩa với retain

Chỉ định rằng có một mạnh (sở hữu) mối quan hệ với đối tượng đích.

Weak thay vào đó, có nghĩa là đối tượng trỏ đến, được tự do phát hành nhưng chỉ khi thuộc tính đó đặt thuộc tính là NULL. Trong ARC, bạn sử dụng yếu để đảm bảo bạn không sở hữu đối tượng trỏ đến

Chỉ định mối quan hệ yếu (không sở hữu) với đối tượng đích . Nếu đối tượng đích được deallocated, giá trị thuộc tính được tự động đặt thành 0.

Nonatomic có nghĩa là nếu nhiều chủ đề cố gắng đọc hoặc thay đổi thuộc tính cùng một lúc thì có thể xảy ra lỗi. Hậu quả là sẽ có các giá trị được viết từng phần hoặc các đối tượng quá mức = CRASH.

Hãy xem thêm here, at Apple's documents.

Từ đó, ví dụ là

@property (weak) IBOutlet MyView *viewContainerSubview; 
@property (strong) IBOutlet MyOtherClass *topLevelObject; 

Kiểm tra cũng this để biết thêm về strongweak.

+0

Yếu không phải là những gì bạn nói nó là. –

+0

Sau đó, chỉ cần đăng câu trả lời của bạn. – Phillip

+0

Cảm ơn bạn đã trả lời! – Dinesh

2

Trong ARC (đếm tham chiếu tự động) Strong cho trình biên dịch biết mối quan hệ của chủ sở hữu tài sản là "mạnh". Nó tương đương với retain trong lược đồ bộ nhớ tự động phân phối. Apple có bài viết về việc chuyển sang ARC here.

0

Thuộc tính mà bạn khai báo là mạnh, nó sở hữu đối tượng và trình biên dịch sẽ quan tâm đến bất kỳ đối tượng nào gán thuộc tính này. Tài sản này sẽ bị phá hủy khi chúng tôi thiết lập để không.

Khi bạn không muốn thời gian kiểm soát cuộc sống thì bạn khai báo thuộc tính tuần.

Các vấn đề liên quan