2011-09-06 26 views
13

Tôi biết @synthesize đã giảm rất nhiều công việc viết getters và setters của tôi. Nhưng có một thủ tục thông thường tôi thường phải sử dụng là những 4 bước ví dụCó cách nào nhanh hơn để làm @property, @synthesize và phát hành biến lớp không?

  1. SomeView *abc;
  2. @property(nonatomic,retain)SomeView *abc;
  3. @synthesize abc;
  4. [abc release];

Có ai đó đưa ra bất kỳ ý tưởng nơi tôi viết SomeView *abc; trong .h và các bước 2,3,4 được tạo tự động?

+1

Thành thật mà nói, tôi không nghĩ rằng nó có thể tốt hơn thế! Nó khá thuận tiện. – Trevor

+5

Vâng, vì một điều, bạn không thực sự cần bước 1 - '@synthesize abc;' đảm nhiệm điều đó cho bạn. Hoặc những gì tôi làm là '@syntheisze abc = _abc;' để thuộc tính không bị nhầm lẫn với biến mẫu. –

+1

Chúc XCode sẽ cung cấp một phím tắt cho việc này; nếu bạn có tấn biến để tạo ra với các mô hình tương tự, điều này được một chút khó chịu – Manny

Trả lời

4

Nếu đó là số IBOutlet, Xcode sẽ viết tất cả mã đó cho bạn khi bạn tạo biến bằng IB. Bạn chỉ cần kéo từ đối tượng mà bạn muốn tham chiếu trong trình chỉnh sửa giao diện đến vị trí trong tệp tiêu đề mà bạn muốn khai báo thuộc tính, điền vào biểu mẫu và nhấn OK.

Như những người khác đã đề cập, bạn có thể bỏ qua tuyên bố ivar ủng hộ có lợi cho việc @synthesize tạo nó cho bạn.

Bạn có thể bỏ qua @synthesize bằng cách sử dụng cờ trình biên dịch thích hợp. Tìm kiếm trên web cho một cái gì đó như "default @synthesize".

Một cách để bỏ qua -dealloc là để treo các đối tượng ra khỏi đối tượng chính của bạn bằng cách sử dụng API đối tượng liên kết Obj-C. Các đối tượng liên kết được giữ lại sẽ được giải phóng khi đối tượng được liên kết với chúng được giải phóng.

Và sau đó có tính năng Tự động đếm tham chiếu (ARC), giúp loại bỏ -dealloc sạch hơn và dứt khoát hơn nhiều.

+0

@synthesize tự động chưa khả dụng. – Abizern

+0

phần sau là mới với tôi, cảm ơn bạn cho thông tin, sẽ xem xét điều này .. là nó khuyến khích sử dụng 1) bỏ qua @synthesize bằng cách sử dụng cờ trình biên dịch thích hợp và 2) bỏ qua -dealloc bởi hiệp hội/ARC? Ý tôi là các nhà phát triển thực sự sử dụng và thích điều này hơn bình thường? – Manny

+0

Rõ ràng, hỗ trợ mặc định '@ synthesize' đã được thêm vào và sau đó chỉ cần xóa nhanh. Tôi hy vọng tính năng này sẽ được sử dụng rộng rãi bất cứ khi nào nó được khôi phục. Bỏ qua '-dealloc' bằng cách liên kết là không bình thường nhưng có thể thực hiện được. Bỏ qua nó bằng cách ARC sẽ trở thành SOP sau khi Apple phát hành một phiên bản của Xcode bao gồm một trình biên dịch hỗ trợ ARC. –

5

Bỏ qua bước một, không cần thiết, @synthesize sẽ tạo ra ngà voi.

+1

Vì vậy, điều đó có nghĩa là tôi chỉ có thể giảm 25% công việc của mình. Cảm ơn. – Pradhan

+0

Chào mừng bạn đến với Objective-C! – WrightsCS

1

Không có nhiều trợ giúp, nhưng một điều tôi làm là di chuyển dealloc lên đầu triển khai, trước các phương pháp khác. Các câu lệnh @synthesize ở ngay trên đó, vì vậy bạn có thể đặt vào @synthesize và phát hành thường xuyên mà không cần phải cuộn. Nó không thực sự tiết kiệm thời gian khi viết mã, nhưng nó giúp bạn giữ cho hai phần được đồng bộ, và đó là một trình tiết kiệm thời gian khi gỡ lỗi.

1

Đó không phải là điều xấu mong muốn. Và nó đã được thực hiện cho bạn trong một số trường hợp:

Trong Trình tạo giao diện của Xcode 4 khi bạn kéo phần tử vào tệp .h của chủ sở hữu tệp đó, hãy thực hiện điều này 1-4 cho bạn và thậm chí đặt nó thành sốcho bạn .

  1. Không cần thiết với thời gian chạy hiện đại.
  2. Vẫn cần thực hiện việc này.
  3. Làm việc với điều này đã được nói đến trong các phiên WWDC10 (113 và 144), nhưng ghi chú phát hành nói rằng điều này chưa xảy ra.
  4. Sử dụng ARC và bạn không cần điều này.

Đó là 2 trong số 4 mà bạn không cần phải làm và một trong số họ đang làm việc để xóa. Vì vậy, nó không phải là tất cả có được nêu ra - nhưng nó là nhận được dễ dàng hơn.

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