Core Foundation オブジェクト、具体的には CFHTTPMessageRef を保持するプロパティがあります。attribute ((NSObject)) マクロを使用して、参照されたオブジェクトを通常の NSObject として扱い、自分でCFReleaseするのではなく、そのオブジェクトの保持と解放を処理するようにコンパイラに指示してみました。プロパティをstrongではなくweakに変更しようとしましたが、何も機能していないようです.静的アナライザーはまだメモリリークがあることを示しており、CFGetRetainCountからの出力の外観から、それは正しい. 私のプロパティがメモリリークを引き起こす理由を誰かが知っていますか:
typedef __attribute__((NSObject)) CFHTTPMessageRef HTTPMessageRef;
@interface ABRemoteConnection : NSObject
@property (strong) HTTPMessageRef message;
@end
- (void)dataReceived:(NSNotification *)notification {
self.message = CFHTTPMessageCreateEmpty(kCFAllocatorDefault, TRUE);
// do some stuff and if the message is complete, use it and release the
// message object
if (messageIsComplete(self.message)) {
self.message = NULL;
}
}