iOS 開発に関する質問 (7)

Jan 20, 2017 am 09:41 AM

71. UIWebViewのサイズをHTMLコンテンツに合わせるにはどうすればよいですか?
iOS5 では、これは非常に簡単で、WebView のデリゲートを設定し、デリゲートに DidFinishLoad: メソッドを実装します:

-(void)webViewDidFinishLoad:(UIWebView*)webView{
CGSizesize=webView.scrollView.contentSize;//iOS5+
webView.bounds=CGRectMake(0,0,size.width,size.height);
}
ログイン後にコピー

72 ウィンドウ内に複数のレスポンダーがあり、キーボードを素早く解放する方法
[[UIApplicationsharedApplication] sendAction:@selector(resignFirstResponder)to:nilfrom:nilforEvent:nil];
このようにして、すべてのレスポンダーが一度にフォーカスを失うことができます。
73. UIWebView で「ピンチ」ジェスチャーを使用してズームできるようにするにはどうすればよいですか?
次のコードを使用します:

webview=[[UIWebViewalloc]init];
webview.autoresizingMask=(UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight);
webview.scalesPageToFit=YES;
webview.multipleTouchEnabled=YES;
webview.userInteractionEnabled=YES;
ログイン後にコピー

74、未定義シンボル:_kCGImageSourceShouldCache、_CGImageSourceCreateWithData、_CGImageSourceCreateImageAtIndex

ImageIO.framework はインポートされません。

75、typensdictionary のオブジェクトでは見つからない辞書要素を読み取るための期待されたメソッド

SDK6.0 では、辞書に「添え字」インデックスを追加し始めました。つまり、dictionary[@"key"] を通じて辞書内のオブジェクトを取得するようになりました。しかし、SDK5.0 では、これは違法です。この問題を解決するには、プロジェクトに新しいヘッダー ファイル NSObject+subscripts.h を作成します。内容は次のとおりです:

#if__IPHONE_OS_VERSION_MAX_ALLOWED<60000
@interfaceNSDictionary(subscripts)
-(id)objectForKeyedSubscript:(id)key;
@end
@interfaceNSMutableDictionary(subscripts)
-(void)setObject:(id)objforKeyedSubscript:(id<NSCopying>)key;
@end
@interfaceNSArray(subscripts)
-(id)objectAtIndexedSubscript:(NSUInteger)idx;
@end
@interfaceNSMutableArray(subscripts)
-(void)setObject:(id)objatIndexedSubscript:(NSUInteger)idx;
@end
#endif
ログイン後にコピー

76。エラー: -[MKNetworkEnginefreezeOperations]:messagesenttodeallocatedinstance0x1efd4750
これはメモリ管理エラーです。 MKNetwork フレームワークは ARC をサポートしており、メモリ管理の問題は発生しませんが、MKNetwork のいくつかのバグにより、この問題は MKNetworkEngine が強い属性に設定されていない場合に発生します。 MKNetworkEngine オブジェクトを ViewController の強い属性に設定することをお勧めします。

77. UIImagePickerControllerSourceTypeSavedPhotosAlbum と UIImagePickerControllerSourceTypePhotoLibrary の違い
UIImagePickerControllerSourceTypePhotoLibrary は写真ライブラリ全体を表し、ユーザーはすべてのフォト アルバム (カメラ ロールを含む) を選択できますが、UIImagePickerControllerSourceTypeSavedPhotosAlbum にはカメラ ロールのみが含まれます。
78. 警告「Prototypetablecellsmusthaveresueidentifiers」
Prototypecell (iOS5 テンプレート セル) の Identidfier 属性は入力されていません。属性テンプレートに入力するだけです。
79. info.plist の値を読み取るには?
次のサンプル コードは、info.plist の URLSchemes を読み取ります:

//TheInfo.plistisconsideredthemainBundle.
mainBundle=[NSBundlemainBundle];
NSArray*types=[mainBundleobjectForInfoDictionaryKey:@"CFBundleURLTypes"];
NSDictionary*dictionary=[typesobjectAtIndex:0];
NSArray*schemes=[dictionaryobjectForKey:@"CFBundleURLSchemes"];
NSLog(@"%@",[schemesobjectAtIndex:0]);
ログイン後にコピー

80 ActionSheet が自動的に解散しないようにするにはどうすればよいですか?
UIActionSheet は、どのボタンをクリックしても、最終的には自動的に閉じられます。最良の方法は、これをサブクラス化し、 noAutoDismiss 属性を追加して dismissWithClickedButtonIndex メソッドをオーバーライドすることです。この属性が YES の場合、デフォルトの dismissWithClickedButtonIndex が呼び出されます:

#import<UIKit/UIKit.h>
@interfaceMyAlertView:UIAlertView
@property(nonatomic,assign)BOOLnoAutoDismiss;
@end
#import"MyAlertView.h"
@implementationMyAlertView
-(void)dismissWithClickedButtonIndex:(NSInteger)buttonIndexanimated:(BOOL)animated{
if(self.noAutoDismiss)
return;
[superdismissWithClickedButtonIndex:buttonIndexanimated:animated];
}
@end
ログイン後にコピー

81。 RSA_public_encrypt 関数のクラッシュ
この問題は非常に奇妙です。システム 6.1 とシステム 6.02 の 2 つのデバイスを使用すると、同じコードはバージョン 6.02 では正常に動作しますが、バージョン 6.1 ではプログラムがクラッシュします:

unsignedcharbuff[2560]={0};
intbuffSize=0;
buffSize=RSA_public_encrypt(strlen(cleartext),
(unsignedchar*)cleartext,buff,rsa,padding);
ログイン後にコピー

問題は次の文にあります:

buffSize=RSA_public_encrypt(strlen(cleartext),
(unsignedchar*)cleartext,buff,rsa,padding);
ログイン後にコピー

6.1 system iPad は 3G バージョンです。使用されている 3G ネットワーク (チャイナユニコム 3gnet) の信号が不安定なため、rsa 公開キーを頻繁に取得できないため、rsa パラメータは nil と表示されます。 6.0系iPadはwifi版なので電波も安定しているのでそういった問題はありません。解決策は、rsa パラメータの有効性を確認することです。
82. 警告: UITextAlignmentCenter は iOS6 で非推奨になりました
NSTextAlignmentCenter は UITextAlignmentCenter に置き換えられました。同様の代替手段がいくつかあり、次のマクロを使用できます:

#ifdef__IPHONE_6_0//iOS6andlater
#defineUITextAlignmentCenter(UITextAlignment)NSTextAlignmentCenter
#defineUITextAlignmentLeft(UITextAlignment)NSTextAlignmentLeft
#defineUITextAlignmentRight(UITextAlignment)NSTextAlignmentRight
#defineUILineBreakModeTailTruncation(UILineBreakMode)NSLineBreakByTruncatingTail
#defineUILineBreakModeMiddleTruncation(UILineBreakMode)NSLineBreakByTruncatingMiddle
#endif
ログイン後にコピー

83、-fno-objc-arc は Xcode5 では設定できません
Xcode5 はデフォルトで ARC を使用し、CompileSources の "CompilerFlags" 列を非表示にするため、設定できません.m ファイルの -fno-objc-arc オプション。 .m ファイルの CompilerFlags 列を表示するには、[表示] -> [ユーティリティ] -> [ユーティリティを非表示] メニューを使用して、右側の [ユーティリティ] ウィンドウを一時的に閉じて CompilerFlags 列を表示し、-fno を設定できます。 - .m ファイルのフラグ。
84. 警告: 「ABAddressBookCreate」は iOS6.0 で最初に非推奨になりました
iOS6.0 以降、このメソッドは廃止され、ABAddressBookCreateWithOptions メソッドに置き換えられました:

CFErrorRef*error=nil;
ABAddressBookRefaddressBook=ABAddressBookCreateWithOptions(NULL,error);
ログイン後にコピー

85。
iOS6 以降、AddressBook フレームワークが変更され、特にアプリがモバイル アドレス帳にアクセスするにはユーザーの承認を取得する必要があります。したがって、新しい ABAddressBookCreateWithOptions 初期化メソッドの使用に加えて、AddressBook フレームワークの新しい ABAddressBookRequestAccessWithCompletion メソッドも使用して、ユーザーが承認されているかどうかを確認する必要があります:

+(void)fetchContacts:(void(^)(NSArray*contacts))successfailure:(void(^)(NSError*error))failure{
#ifdef__IPHONE_6_0
if(ABAddressBookRequestAccessWithCompletion){
CFErrorReferr;
ABAddressBookRefaddressBook=ABAddressBookCreateWithOptions(NULL,&err);
ABAddressBookRequestAccessWithCompletion(addressBook,^(boolgranted,CFErrorReferror){
//ABAddressBookdoesn&#39;tgauranteeexecutionofthisblockonmainthread,butwewantourcallbackstobe
dispatch_async(dispatch_get_main_queue(),^{
if(!granted){
failure((__bridgeNSError*)error);
}else{
readAddressBookContacts(addressBook,success);
}
CFRelease(addressBook);
});
});
}
#else
//oniOS<6
ABAddressBookRefaddressBook=ABAddressBookCreate();
readAddressBookContacts(addressBook,success);
CFRelease(addressBook);
}
#endif
}
ログイン後にコピー

このメソッドには、成功と失敗の 2 つのブロック パラメーターがあり、これらは使用されます。ユーザーがアクセスを承認するには、同意と同意の 2 つの状況があります。
コードが ABAddressBookRequestAccessWithCompletion 関数を呼び出すとき、2 番目のパラメータはブロックであり、ブロックの付与されたパラメータは、同意するかどうかをユーザーに伝えるために使用されます。許可が「いいえ」(同意しない) の場合、失敗ブロックと呼ばれます。許可がはい (同意) の場合、readAddressBookContacts 関数を呼び出して連絡先情報をさらに読み取ります。
readAddressBookContacts は次のように宣言されます:

staticvoidreadAddressBookContacts(ABAddressBookRefaddressBook,void(^completion)(NSArray*contacts)){
//dostuffwithaddressBook
NSArray*contacts=(NSArray*)CFBridgingRelease(ABAddressBookCopyArrayOfAllPeople(addressBook));
completion(contacts);
}
ログイン後にコピー

まず、addressBook からすべての連絡先を取得し (結果は NSArray 配列に入れられます)、次に完了ブロック (つまり、fetchContacts メソッドの成功ブロック) を呼び出します。完了すると、配列を反復処理できます。
fetchContacts メソッドの呼び出し例:

+(void)getAddressBook:(void(^)(NSArray*))completion{
[selffetchContacts:^(NSArray*contacts){
NSArray*sortedArray=[contactssortedArrayUsingComparator:^(ida,idb){
NSString*fullName1=(NSString*)CFBridgingRelease(ABRecordCopyCompositeName((__bridgeABRecordRef)(a)));
NSString*fullName2=(NSString*)CFBridgingRelease(ABRecordCopyCompositeName((__bridgeABRecordRef)(b)));
intlen=[fullName1length]>[fullName2length]?[fullName2length]:[fullName1length];
NSLocale*local=[[NSLocalealloc]initWithLocaleIdentifier:@"zh_hans"];
return[fullName1compare:fullName2options:NSCaseInsensitiveSearchrange:NSMakeRange(0,len)locale:local];
}];
completion(sortedArray);
}failure:^(NSError*error){
DLog(@"%@",error);
}];
}
ログイン後にコピー

即在fetchContacts的完成块中对联系人姓名进行中文排序。最后调用completion块。在fetchContacts的错误块中,简单打印错误信息。
调用getAddressBook的示例代码如下:

[AddressBookHelpergetAddressBook:^(NSArray*node){
NSLog(@"%@",NSArray);
}];
ログイン後にコピー

86、ARC警告:PerformSelectormaycausealeakbecauseitsselectorisunknown
这个是ARC下特有的警告,用#pragmaclangdiagnostic宏简单地忽略它即可:

#pragmaclangdiagnosticpush
#pragmaclangdiagnosticignored"-Warc-performSelector-leaks"
[targetperformSelector:selwithObject:[NSNumbernumberWithBool:YES]];
#pragmaclangdiagnosticpop
ログイン後にコピー

87、'libxml/HTMLparser.h'filenotfound
导入libxml2.dylib后出现此错误,尤其是使用ASIHTTP框架的时候。在BuildSettings的HeaderSearchPaths列表中增加“${SDK_DIR}/usr/include/libxml2”一项可解决此问题。
所谓"$(SDK_ROOT)"是指编译目标所使用的SDK的目录,以iPhoneSDK7.0(真机)为例,是指/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk目录。
注意,似乎Xcode4.6以后“UserHeaderSearchPaths”(或者“AlwaysSearchUserPaths”)不再有效,因此在“UserHeaderSearchPaths”中配置路径往往是无用的,最好是配置在“HeaderSearchPaths”中。
88、错误:-[UITableViewdequeueReusableCellWithIdentifier:forIndexPath:]:unrecognizedselector
这是SDK6以后的方法,在iOS5.0中这个方法为:
[UITableViewdequeueReusableCellWithIdentifier:]
89、@YES语法在iOS5中无效,提示错误:Unexpectedtypename'BOOL':expectedexpression

在IOS6中,@YES定义为:
#defineYES((BOOL)1)
但在iOS5中,@YES被少写了一个括号:
#defineYES(BOOL)1
因此@YES在iOS5中的正确写法应当为@(YES)。为了简便,你也可以在.pch文件中修正这个Bug:

#if__has_feature(objc_bool)
#undefYES
#undefNO
#defineYES__objc_yes
#defineNO__objc_no
#endif
ログイン後にコピー

以上就是iOS 开发百问(7)的内容,更多相关内容请关注PHP中文网(www.php.cn)!

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Apple の iOS 18 の最初のバージョンには、深刻な発熱、WeChat の遅延など、非常に多くのバグがあることが明らかになりました。 Apple の iOS 18 の最初のバージョンには、深刻な発熱、WeChat の遅延など、非常に多くのバグがあることが明らかになりました。 Jun 13, 2024 pm 09:39 PM

毎年恒例の WWDC が終了し、間違いなく iOS18 がみんなの注目の的になっています。現在、多くのiPhoneユーザーがiOS18へのアップグレードを急いでいますが、さまざまなシステムバグが人々を不快にさせています。一部のブロガーは、「バグが非常に多い」ため、iOS18にアップグレードする場合は注意する必要があると述べています。このブロガーは、iPhoneがメインマシンの場合、最初のバージョンには多くのバグがあるため、iOS18にアップグレードしないことをお勧めすると述べています。また、現在発生しているいくつかのシステム バグについてもまとめました。 1. アイコン スタイルの切り替えが停止し、アイコンが表示されない場合があります。 2. 懐中電灯の幅のアニメーションが失われることがよくあります。 4. WeChat メッセージのプッシュに遅延が発生します。 10 秒。時々電話ができなくなり、画面が真っ暗になります。

Apple、iOS 18に導入される準同型暗号化用のオープンソースSwiftパッケージをリリース Apple、iOS 18に導入される準同型暗号化用のオープンソースSwiftパッケージをリリース Jul 31, 2024 pm 01:10 PM

7月31日のニュースによると、Appleは昨日(7月30日)プレスリリースを発行し、Swiftプログラミング言語で準同型暗号化を可能にする新しいオープンソースSwiftパッケージ(swift-homomorphic-encryption)のリリースを発表した。注: 準同型暗号 (HE) とは、暗号文の準同型演算特性を満たす暗号アルゴリズムを指します。つまり、データを準同型暗号化した後、暗号文に対して特定の計算を実行し、得られた暗号文の計算結果を同時に処理します。状態復号後の平文は、平文データに対して同じ計算を直接実行することと同等であり、データの「不可視性」が実現されます。準同型暗号技術は、基になる暗号化されていないデータを運用プロセスに漏らすことなく、暗号化データを計算できます。

Apple、iOS/iPadOS 18 Beta 4アップデートを再リリース、バージョン番号は22A5316kに引き上げ Apple、iOS/iPadOS 18 Beta 4アップデートを再リリース、バージョン番号は22A5316kに引き上げ Jul 27, 2024 am 11:06 AM

手がかりを提出してくれたネチズンの Ji yingkesi、xxx_x、フライド トマト、テレンス、スパイシー チキン ドラムスティックに感謝します。 7 月 27 日のニュースによると、Apple は本日、開発者向けに iOS/iPadOS 18 Beta 4 アップデートを再リリースしました。内部バージョン番号は 22A5316j から 22A5316k にアップグレードされました。現時点では、2 つの Beta 4 バージョン アップデートの違いは不明です。登録された開発者は、「設定」アプリを開いて「ソフトウェア アップデート」セクションに入り、「ベータ アップデート」オプションをクリックして、iOS18/iPadOS18 開発者ベータ設定を切り替えてベータ バージョンを選択できます。ベータ版をダウンロードしてインストールするには、開発者アカウントに関連付けられた Apple ID が必要です。 iO 7 月 24 日の報道

更新 |ハッカーが EU 外の iPad に Epic Games Store と Fortnite をインストールする方法を説明 更新 |ハッカーが EU 外の iPad に Epic Games Store と Fortnite をインストールする方法を説明 Aug 18, 2024 am 06:34 AM

更新: Saunders Tech は、EU 外の iPad に Fortnite と Epic Games Store をインストールする方法を説明するチュートリアルを YouTube チャンネルにアップロードしました (ビデオは下に埋め込まれています)。ただし、このプロセスには iO の特定のベータ版が必要なだけではありません。

Apple の iOS 18「Boundless Notes」アプリの新機能: シーン機能の拡張、グリッド配置の導入 Apple の iOS 18「Boundless Notes」アプリの新機能: シーン機能の拡張、グリッド配置の導入 Jun 02, 2024 pm 05:05 PM

6月1日のニュースによると、テクノロジーメディアAppleInsiderは本日ブログ投稿を公開し、AppleがiOS18システムの「Freeform」アプリケーション拡張機能の「Scenes」の新しいナビゲーション機能を開始し、オブジェクトの位置合わせの新しいオプションを追加すると述べた。 「Wubianji」アプリの紹介 まず、「Wubianji」アプリについて簡単に紹介します。このアプリは 2022 年にリリースされ、現在 iOS、iPadOS、macOS15、visionOS バージョンがリリースされています。 Apple の公式紹介文は次のとおりです。「Boundless Notes」は、インスピレーションを現実にするための優れたツールです。ほぼすべてのファイル タイプをサポートする柔軟なキャンバスで、プロジェクトをスケッチしたり、ムードボードをデザインしたり、ブレインストーミングを開始したりできます。 iCloud を使えば、すべてのボードを

Apple iOS/iPadOS 18 Developer Preview Beta 4 リリース: CarPlay 壁紙の追加、設定オプションの整理、カメラ制御の強化 Apple iOS/iPadOS 18 Developer Preview Beta 4 リリース: CarPlay 壁紙の追加、設定オプションの整理、カメラ制御の強化 Jul 24, 2024 am 09:54 AM

ネチズンのおかげでスパイシーチキンレッグバーガー、ソフトメディアの新しい友達2092483、手書きの過去、DingHao、Xiaoxing_14、Wowotou Eat Big Kou、Feiying Q、ソフトメディアの新しい友達2168428、Slades、Aaron212、ハッピーリトルハリネズミ、リトルアール、小さな手がかり魚を食べるミルクキャット! [アップグレード チュートリアルに直接アクセスするには、ここをクリックしてください] 7 月 24 日のニュースによると、Apple は本日、iOS/iPadOS18 開発者プレビュー バージョン Beta4 アップデート (内部バージョン番号: 22A5316j) を iPhone および iPad ユーザーにプッシュしました。このアップデートは 15 日後です。最後のリリース。 Carplay 壁紙 Apple が CarPlay に壁紙を追加し、ライトモードとダークモードをカバーしています。その壁紙スタイルは iPhone に似ています。

iPhone12 ios16はios17.5beta3にアップデートすべきでしょうか? ios17.5beta3の使用感はどうですか? iPhone12 ios16はios17.5beta3にアップデートすべきでしょうか? ios17.5beta3の使用感はどうですか? Apr 25, 2024 pm 04:52 PM

実用的な共有... Apple が新しい iOS バージョンを発表し続ける中、多くの iPhone ユーザーはシステムをアップグレードするかどうかの選択に直面しています。最新のiOS17.5Beta3のリリースは、特にiPhone12ユーザーにとって、既存のiOS16を放棄して新しいベータ版を試すべきかどうか、議論する価値のある問題となっています。この記事では、実際の経験に基づいて、iPhone 12 を iOS 17.5 Beta 3 にアップグレードすることの長所と短所を分析し、大多数の Apple ファンに参考にしていただきます。まず第一に、ベータ版は通常、一定のリスクを負う開発者または早期採用者によって使用されることを明確にする必要があります。これは、正式版と比較して、ベータ版には以下の内容が含まれる可能性があることを意味します。

Apple iOS 17.5 RC バージョンがリリース: EU の iPhone ユーザーが Web サイトからアプリをダウンロードできるようになります Apple iOS 17.5 RC バージョンがリリース: EU の iPhone ユーザーが Web サイトからアプリをダウンロードできるようになります May 08, 2024 am 09:30 AM

[アップグレード チュートリアルに直接アクセスするには、ここをクリックしてください] 5 月 8 日のニュースによると、Apple は本日、iOS17.5RC アップデート (内部バージョン番号: 21F79) を iPhone ユーザーにプッシュしました。このアップデートは最後のリリースから 70 日後です。 iOS/iPadOS/watchOS/macOS 開発版とパブリックベータ版をアップグレードするにはどうすればよいですか? iOS/iPadOS17 開発者プレビュー版およびパブリック ベータ版をアップグレードするには、友人が共有したエクスペリエンスを参照できます: エクスペリエンス 投稿 1||エクスペリエンス 投稿 2||エクスペリエンス 投稿 3||エクスペリエンス 投稿 4。 iOS/iPadOS 16.4 Developer Preview Beta 1 からは、Apple Developer Program に登録する必要があります。登録後、システムの [設定] [ソフトウェア アップデート] を開き、アップグレード オプションを表示します。 iPhone または IP アドレスに注意してください。

See all articles