これはまさに私が抱えている問題のようですが、その投稿の答えは私の問題を解決しません。のデータシリアライゼーションサブクラスを書き込もうとしていますNSMutableData
。問題のある関数ヘッダーは次のようになります。
-(void)readString:(__autoreleasing NSString **)str
関数でデータ操作を行って、データ ストリーム内の次の文字列に対応する特定のバイトを取得し、次の行を呼び出します。
*str = [[NSString alloc] initWithData:strData encoding:NSUTF8StringEncoding];
このコードにエラーはありません。しかし、次のように関数を呼び出そうとすると:
+(id) deserialize:(SerializableData *)data
{
Program *newProgram = [[Program alloc] init];
[data readString:&(newProgram->programName)];
実際に関数を呼び出す行で、次のエラーが発生します。
書き戻しのために非ローカル オブジェクトのアドレスを __autoreleasing パラメータに渡す
を宣言の前、最初の の前__autoreleasing
、および 2 つの間に配置しようとしましたが、すべての構成でエラーが発生します。 NSString
*
*
他の質問を読んだときに何かを見逃したのですか、それともその投稿の時からARCコンパイラで何かが変更されましたか?
編集:
文字列にアクセスしようとしている方法に問題があるようです。次のようなことで回避できます。
NSString* temp;
[data readString&(temp)];
newProgram.programName = temp;
しかし、ivarに直接アクセスしたい