IOSインタビューの質問の概要1

1. mvcとmvpの違い、および使用の長所と短所

MVPのVは、iOSのViewControllerとViewを指します。MVPはMVCのViewControllerを分割します。ビューデータの論理処理部分はPであり、ViewControllerの残りの部分はViewとマージされてVになります。VとPの間の通信は、プロトコルを介して実行されます。

MVPは、各モジュールのデカップリングを実現し、テスト容易性を向上させます。ただし、コードの総量はMVCよりも多くなります。
さらに、iOS MVCは、迅速な開発、つまりコードサイズが小さいプロジェクトに適しています。したがって、単純なMVCデモをMVPに変更するのは不器用に思えます。

2. iOSが正常にパッケージ化された後、iPhoneで実行すると、フラッシュバックして黒い画面になります

1つは証明書エラーであり、もう1つは現在のデバイスが開発者の対応するアカウントにないことです。

3.OCの辞書実装の原則

ハッシュ表:

ハッシュ:1、ハッシュアルゴリズム2、md5 3、SHA1 .. ..

ハッシュ番号を自分で記述し、名前キーを26個の最初の文字で並べ替え、13個のグリッドをストレージに使用できます。最初の文字が同じ場合は、増分を追加できます。H=(H(key)+ d)Mod m、dは1から始まり、全体の量m = 13を変調して、増加操作を実行します。実際には、グリッド内の繰り返しが少ない場合、アルゴリズムは優れています。効率が高いほど。

4.iOSのメッセージ送信メカニズムとメッセージ転送メカニズムの違い

メッセージ送信メカニズム:

OCの関数呼び出しがメッセージ送信になります。動的呼び出しプロセスに属します。コンパイル中に実際に呼び出す関数を決定することはできません(OCはコンパイルフェーズで任意の関数を呼び出すことができます。この関数が実装されていなくても、宣言されている限りエラーは報告されません。 C言語はコンパイルフェーズ中にエラーを報告します)。実際に実行されている場合にのみ、対応する関数が検索され、関数名に従って呼び出されます。

メッセージ転送メカニズム:

1.メソッド解決メソッド分析処理ステージ
2.早送り早送りステージ
3.通常転送通常転送ステージ

5.祖先間のコミュニケーション 

iOS業界で議論されているコンポーネント化ソリューションはたくさんありますが、一般的には3つあります。

 

  • プロトコル登録スキーム
  • URL登録スキーム
  • ターゲットアクションランタイム呼び出しプラン

MGJRouteソリューション

アプリのマッシュルームストリートのURL登録プログラムパスコンポーネントにより、次のステップに進むことができることが非常に明確になりました

原理:

URLを介してサービスを登録し、URLを介して他の場所に登録し、サービスフレームワークを取得して、URLブロックフォームを維持します

特徴:

  • URLのメンテナンスコストが高く、ハードデコード
  • サービスはコンポーネント内のどこからでも呼び出し/登録でき、コンポーネントインターフェイスサービスを統合する必要はありません。
  • すべてのビジネスコンポーネントは、このフレームワークに依存する必要があります

6. SDWebImageはどのようにキャッシュをクリーンアップしますか?

1.時系列で削除し、7日後に削除します。

2.以前に削除されなかったものを時系列で保存し、最大キャッシュの半分までカスタム最大キャッシュに従って削除します。

キャッシュ計算、その単位はバイトです

[[[SDWebImageManager sharedManager] imageCache]getSize];

キャッシュされた画像の数

[[[SDWebImageManager sharedManager] imageCache] getDiskCount];

キャッシュのクリーニング、1つ目はメモリキャッシュ、2つ目はハードディスクキャッシュ

[[[SDWebImageManager sharedManager] imageCache] clearMemory];  
[[[SDWebImageManager sharedManager] imageCache] clearDisk];

7. SDWebImageは、受信したメモリの警告をどのように処理しますか?

AutoPurgeCacheはNSCacheを継承してキャッシュを自動的にクリアし、NSCacheのremoveAllObjectsメソッドを呼び出します。

8. SDWebImageで写真のコストを計算するにはどうすればよいですか?

キャッシュサイズ

/**
 * Get the size used by the disk cache
 */
- (NSUInteger)getSize;
// 注意:返回值单位为字节
// 具体实现
- (NSUInteger)getSize {
    __block NSUInteger size = 0;
    dispatch_sync(self.ioQueue, ^{
        NSDirectoryEnumerator *fileEnumerator = [_fileManager enumeratorAtPath:self.diskCachePath];
        for (NSString *fileName in fileEnumerator) {
            NSString *filePath = [self.diskCachePath stringByAppendingPathComponent:fileName];
            NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
            size += [attrs fileSize];
        }
    });
    return size;
}

9. SDWebImageのclearとcleanの違いは何ですか?
 

晴れ

   すべて削除

掃除

   部分的に削除 

  1.時系列で削除し、7日後に削除します。

   2.以前に削除されなかったものを時系列で保存し、最大キャッシュの半分までカスタム最大キャッシュに従って削除します。

 

 

おすすめ

転載: blog.csdn.net/Draven__/article/details/90110217