Tôi có sau trong tiêu đề:Làm thế nào để giữ lại setter được triển khai với @synthesize?
@property (nonatomic, retain) UIView *overlay;
Và trong việc thực hiện:
@synthesize overlay;
Sau đó:
UIView *tempOverlay = [[UIView alloc] initWithFrame:CGRectMake(160.0f, 70.0f, 150.0f, 310.0f)];
self.overlay = tempOverlay;
[tempOverlay release];
Không phải là biến tempOverlay
trên không cần thiết? Tôi không thể chỉ làm:
self.overlay = [[UIView alloc] initWithFrame:CGRectMake(160.0f, 70.0f, 150.0f, 310.0f)];
Nếu thiết lập được giữ lại tổng hợp trông giống như bạn có nó, thì điều gì sẽ xảy ra khi giá trị được đặt đầu tiên? Nếu bạn cố gắng để phát hành giá trị cũ trước, nó sẽ không sụp đổ với BAD ACCESS? Hoặc, tất cả các thuộc tính có được tự động tính số lần giữ đầu tiên là 1 không? – ma11hew28
Nên sử dụng phương pháp 2), có lẽ là lần đầu tiên được thiết lập? Nhưng, nếu bạn đang thiết lập nó sau khi nó đã được thiết lập, thì giá trị cũ sẽ không được giải phóng (trừ khi được thực hiện một cách rõ ràng). Vì vậy, điều đó sẽ gây ra rò rỉ bộ nhớ, đúng không? – ma11hew28
Ban đầu, giá trị là nil và gửi bất kỳ thư nào đến nil (bao gồm cả giữ lại/giải phóng) là một số không trả về số không. – jv42