The -dealloc method in CIFilter is highly unusual in that it will release instance variables belonging to its *subclasses* if the variable name starts with "input" or backs a property whose name starts with "input". Subclasses should not release these ivars in their own -dealloc method -- doing so could result in an over release. Before this commit, the DeallocChecker would warn about missing releases for such "input" properties -- which could cause users of the analyzer to add over releases to silence the warning. To avoid this, DeallocChecker now treats CIFilter "input-prefixed" ivars as MustNotReleaseDirectly and so will not require a release. Further, it will now warn when such an ivar is directly released in -dealloc. rdar://problem/25364901 llvm-svn: 264463
36 lines
709 B
Objective-C
36 lines
709 B
Objective-C
#pragma clang system_header
|
|
|
|
#define nil ((id)0)
|
|
|
|
typedef signed char BOOL;
|
|
@protocol NSObject
|
|
- (BOOL)isEqual:(id)object;
|
|
- (Class)class;
|
|
@end
|
|
|
|
@interface NSObject <NSObject> {}
|
|
+ (instancetype)alloc;
|
|
- (void)dealloc;
|
|
- (id)init;
|
|
- (id)retain;
|
|
- (oneway void)release;
|
|
@end
|
|
|
|
@interface NSRunLoop : NSObject
|
|
+ (NSRunLoop *)currentRunLoop;
|
|
- (void)cancelPerformSelectorsWithTarget:(id)target;
|
|
@end
|
|
|
|
@interface NSNotificationCenter : NSObject
|
|
+ (NSNotificationCenter *)defaultCenter;
|
|
- (void)removeObserver:(id)observer;
|
|
@end
|
|
|
|
typedef struct objc_selector *SEL;
|
|
|
|
void _Block_release(const void *aBlock);
|
|
#define Block_release(...) _Block_release((const void *)(__VA_ARGS__))
|
|
|
|
@interface CIFilter : NSObject
|
|
@end
|