1. ImagePicker のサイズを設定する
Popover Controller では ImagePicker は常にデフォルトのサイズで表示され、popoverContentSize 属性を設定しても無駄なようです。解決策は、ImagePicker をカスタム ViewController に「組み込み」、この ViewController を presentPopover することです:
UIViewController *containerController = [[UIViewController alloc] init]; containerController.contentSizeForViewInPopover = CGSizeMake(600,self.view.frame.size.height); [containerController.viewaddSubview:_imagePicker.view]; _popController= [[UIPopoverController alloc] initWithContentViewController:containerController]; CGPoint p=[self.view convertPoint:button.center fromView:sender.superview]; [_popController presentPopoverFromRect:(CGRect){p,CGSizeZero} inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; [_imagePicker.view setFrame:containerController.view.frame];// 很重要
ポップオーバーの幅は最大 600 であることに注意してください。さらに、_imagePicker は各 presentPopoverFromRect の前に 1 回初期化する必要があります。そうしないと、表示位置が不正確になります。
2. アップロードしたファイルの中国語ファイル名が文字化けする問題
iOS クライアントで URL エンコードを使用してファイル名をエンコードし、サーバーで URL デコードを使用します。
クライアント:
NSStringEncodingenc=NSUTF8StringEncoding; [request setData:datawithFileName [filename stringByAddingPercentEscapesUsingEncoding:enc] andContentType:@"application/octet-stream" forKey:key];
サーバー:
String filename=request.getParameter(“upload_file”); filename=URLDecode.decode(s,”utf-8”);
3. Mac 64 ビット デバイス
SVN からプロジェクトを更新した後、Scheme が Mac 64 ビット デバイスとして表示され、プログラムの実行が許可されない場合があります。この時点では、Target の DeploymentTarget をリセットする (シミュレーターまたはデバッグ デバイスに設定する) だけで済みます。
4. デバッガーの NSLog を削除します。
コンパイル パラメーターの最適化レベルは、さまざまなバージョンに応じて設定されます。たとえば、デバッグ バージョンは「なし」、リリース バージョンは「最速、最小」です。このようにして、このパラメーターに基づいて NSLog 関数を再定義できます:
#ifndef __OPTIMIZE__ #define NSLog(...)NSLog(__VA_ARGS__) #else #define NSLog(...) {} #endif
5. 警告: 関数には以前のプロトタイプがありません
C 仕様に従って、関数にパラメーターがない場合は、関数パラメーターとして void を使用します。
関数宣言では、「void functionA();」の代わりに「void functionA(void);」を使用する必要があります。
6. 配列の並べ替え
方法 1:
- (NSComparisonResult)compare:(Person *)otherObject { return [self.birthDatecompare:otherObject.birthDate]; } NSArray *sortedArray; sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(compare:)];
方法 3 (10.6+):
NSSortDescriptor *sortDescriptor; sortDescriptor = [[[NSSortDescriptor alloc]initWithKey:@"birthDate" ascending:YES] autorelease]; NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; NSArray *sortedArray; sortedArray = [drinkDetails sortedArrayUsingDescriptors:sortDescriptors];
Xcode はすべてのファイル タイプを検出しようとします。ファイルのタイプが「ソース ファイル」(.js ファイルなど) であると判断した場合、常にそのファイルをコンパイル ソースに追加してコンパイルしようとします。この警告に対する解決策は、そのようなファイルをビルド フェーズのコンパイル ソースからコピー バンドル リソースに移動することです。
9. 警告: 「initWithFrame:reuseIdentifier:」は非推奨です
このメソッドは、以降のバージョンでは廃止されます。
-initWithStyle:reuseIdentifier:
10 を使用してください。itms-services は機能しません
itms-services は、プロビジョニング プロファイルで指定された証明書を検証してインストールします。
この .ipa ファイルをインストールする前に、「ax.init.itunes.apple.com」と「ocsp.apple.com」に接続されるプロファイジョニング プロファイルを確認してください。
イントラネットを使用している場合は、上記のアドレスにアクセスできるかどうかを確認してください。そうしないと、OTA を使用してアプリをインストールすることができません。 iOS 4.0以降が必要です。
注: 上記のアドレスにアクセスできない場合でも、インストールには影響しません。ただし、iOS は実行時に上記のアドレスを通じて証明書が正当であるかどうかをチェックします。インストールが正当である場合、iOS はチェック結果をキャッシュします (7 日間)。
上記は iOS 開発に関する質問 (1) の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。