私はARCに変換していますが、コードを壊さずにこのコンパイラエラーを取り除く方法を見つけることができません。
2つのオブジェクトをセレクターに渡す必要があるので、以下に示すように両方を配列に追加し、その配列をセレクターに送信します。
LWPagerContent* content = nil;
NSArray* args = [NSArray arrayWithObjects:article, [NSValue valueWithPointer:&content], nil];
[self performSelectorOnMainThread:@selector(initArticlePagerContent:) withObject:args waitUntilDone:YES];
このメソッドは配列にアクセスしますが、配列で参照されているアドレスのオブジェクトを変更する必要があります。図のようにLWPagerContentオブジェクトを初期化する必要があります。その後、そのオブジェクトは、performSelectorを呼び出した元のメソッドによって使用されます。
- (void)initArticlePagerContent:(NSArray*)args {
Article* article = [args objectAtIndex:0];
LWPagerContent** contentPtr = [[args objectAtIndex:1] pointerValue];
*contentPtr = [[NSClassFromString([StyleSheet articleContentClass]) alloc] initWithArticle:article];
}
これは問題なく動作しますが、ARCに変換しようとすると、すぐにそのように言われ"Implicit conversion of a non-Objective-C type 'void *' to 'LWPagerContent *__strong *' is disallowed with ARC"
ます。"LWPagerContent **..."
このエラーは、 (上記の最後から2番目の行)で始まる行で発生します。他の投稿で推奨されているように使用__bridge
してみましたが、何も機能しないようです。__autoreleasing
どんな提案でも大歓迎です。