llvm-project

Форк
0
/
remove-dealloc-zerouts.m 
44 строки · 972.0 Байт
1
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
2
// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
3
// RUN: diff %t %s.result
4

5
@interface Foo 
6
@property (retain) id x;
7
@property (retain) id y;
8
@property (retain) id w;
9
@property (retain) id z;
10
@property (strong) id q;
11
@end
12

13
@implementation Foo 
14
@synthesize x;
15
@synthesize y;
16
@synthesize w;
17
@synthesize q;
18
@dynamic z;
19

20
- (void) dealloc {
21
  self.x = self.y = self.w = 0;
22
  self.x = 0, w = 0, y = 0;
23
  [self setY:0];
24
  w = 0;
25
  q = 0;
26
  self.z = 0;
27
}
28
@end
29

30
@interface Bar
31
@property (retain) Foo *a;
32
- (void) setA:(Foo*) val;
33
- (id) a;
34
@end
35

36
@implementation Bar
37
- (void) dealloc {
38
  [self setA:0];  // This is user-defined setter overriding synthesize, don't touch it.
39
  self.a.x = 0;  // every dealloc must zero out its own ivar. This patter is not recognized.
40
}
41
@synthesize a;
42
- (void) setA:(Foo*) val { }
43
- (id) a {return 0;}
44
@end
45

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.