iOSでは、「プロトコル」はそれです
id foo = [[SomeClass alloc] init]
[foo release]
リリースによって解放されるように、retainCount が 1 のオブジェクト「foo」を作成する必要があります。
以下の iOS5 のコードでは、retainCount が 3 になります。
TWTweetComposeViewController *twController = [[TWTweetComposeViewController alloc] init];
log_trace(@"twController (after construction) retain count %d", [twController retainCount]);
問題は、アプリに発行されたメモリ警告中にクラッシュすることです
*** Terminating app due to uncaught exception 'NSRangeException', reason: 'Cannot remove an observer <TWTweetComposeViewController 0x82a3980> for the key path "contentSize" from <UITextView 0x13f2e760> because it is not registered as an observer.'
iOS6 ベータ 1 ビルドを確認したところ、この動作は修正されています (クラッシュも同様です)。
これは質問につながります: iOS5.1 で何とかこれを回避する方法はありますか?