22. 解放されたインスタンス 0x52cc690 エラーへのメッセージを解決します
このエラーは、次のようなオブジェクトに値を割り当てようとすると発生します:
tfContent.text=bodyText;
この時点で、NSZombieEnable オプションをオンにすることができます。コンソールは次のようになります。 出力:
***-[CFString _isNaturallyRTL]: 割り当て解除されたインスタンス 0x52cc690 にメッセージが送信されました。
説明 _isNaturallyRTL メッセージが、解放されたオブジェクトに送信されました。上記のステートメントから判断すると、それは tfContent と bodyText という 2 つのオブジェクトである可能性があります。
tfContent または bodyText のメモリ アドレスを出力して、どのオブジェクトが解放されたかを確認できます:
NSLog(@"tfContent:0x%x",(int) tfContent); NSLog(@"bodytext:0x%x",(int) bodyText);
結果は、bodyText が早期に解放されたことを示します:
tfContent: 0x52cf160 bodytext: 0x52cc690
bodyText を適切な場所に保持すると、問題は解決されます。
23. putpkt:write 失敗: パイプ破損エラー
デバイスを再起動します。
24. .hfile not found
実際には、.h ファイルはターゲットに含まれていません。対応する .m ファイルを選択し、[ShowUtilities] ボタン (ツールバーの右端にある) をクリックして、[Utilities] で [Target Membership] を見つけ、[Target] のチェックを外して、再度チェックを入れます。これは、.m ファイルをターゲットのビルドフェーズに追加することと同じです。
25. Xcode 4: iPhone 用の xib を iPad 用に変換する方法
Xcode 3.x では、「iPad バージョンの作成」メニューから xib を iPhone バージョンから iPad バージョンに変換します。
しかし、Xcode 4.xでは、このメニューは見つかりません。筆者はいろいろ調べた結果、次の方法で xib を iPad 版に変換できることを発見しました。
1. xib ソース ファイルを変更します
xib ファイルは実際には XML ファイルです。プロジェクト ナビゲータで、xib ファイルを右クリックし、[ソース コードとして開く] を選択します。xib ファイルをソース コード モードで表示し、「com.apple.InterfaceBuilder3.CocoaTouch.XIB」という行を見つけて変更します。それを「com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB」、つまり「.iPad」が追加されます。
⌘+F を押して検索バーを開き、[置換] メニューをクリックしてモードを置換モードに変更します。 xib ファイル内のすべての「IBCocoaTouchFramework」を「IBIPadFramework」に置き換えます。
⌘+S を押して変更を保存します。
2. xib の表示サイズを変更します
xib ファイルを右クリックし、「名前を付けて開く -> Interface Builder – iOS」を選択し、IB モードで開きます。
xib ファイルでルート ビュー (UIView) を選択し、プロパティ パネルで [サイズ] オプションを見つけて、それを iPad の全画面に変更します。
これで、iPad バージョンの xib を入手できるようになりました。
26. アイコンの寸法 (0 x 0) がサイズ要件を満たしていません。
プロジェクトの [BuildSettings] を開き、[Compress PNG Files] を見つけて値を [No] に設定します。
または:
png ファイルを選択し、FileInspector パネルでファイル タイプを見つけて、「PNG」から「Icon」に変更します。
27. 警告: 関数の以前のプロトタイプはありません
[ターゲット]->[BuildSettings] を開き、プロトタイプを検索します。 、欠落している関数 ProtoTypes を NO に変更します。
28. CorePlot のコンパイル時に「Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clangfailed with exit code 1」というエラーが発生します。
スキームを iOS デバイスから iPhone 5.0 シミュレーターに変更してください。または、C/C++ のコンパイラを LLVM GCC4.2 に変更します。同時に、Core Plot 1.0 は古い armv6 CPU をサポートしなくなります。
29. CABasicAnimation を使用して UIView のアルファ値を変更することは無効です。
UIView のアルファ値は、実際には、keyPath として opcity を使用してください。
30. CorePlost: 軸ラベルをカスタマイズした後、目盛りが表示されません。
AxisのmajorTickLocationsを目盛りを表示したい位置に設定します。
NSMutableArray*customTickLocations=[[[NSMutableArray alloc]init]autorelease]; for(int i=0;i<10;i++){ [customTickLocationsaddObject:[NSNumber numberWithInt:i]]; } xAxis.majorTickLocations=[NSSetsetWithArray:customTickLocations];
31. カスタマイズされた UITableViewCell の場合、indentationLevel は有効になりません
カスタマイズされた UITableViewCell にlayoutSubviews メソッドを実装する必要があります。
- (void)layoutSubviews { [super layoutSubviews]; float indentPoints = self.indentationLevel *self.indentationWidth; for(UIView *view in self.subviews){ view.frame = CGRectMake( view.frame.origin.x+indentPoints, view.frame.origin.y, view.frame.size.width, view.frame.size.height ); } }
上記は iOS 開発に関する質問 (3) の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。