iOS面试题集(三)

22.在做友盟分享之前需要做哪些准备工作

01 最基本配置

  • 下载友盟SDK导入到工程中,按照说明导入三方库

  • 设置授权

       AppDelegate中
      //设置友盟的AppKey(友盟基础SDK授权)
          [UMSocialData setAppKey:@"578c894ae0f55a30f30008d3"];
      
       //设置如果检测到当前用户没有安装我集成的分享平台,直接隐藏平台
       //这里面需要隐藏的可以自己加
          [UMSocialConfig hiddenNotInstallPlatforms:@[UMShareToQQ, UMShareToQzone, UMShareToWechatSession, UMShareToWechatTimeline]];
      
      //要在Application中调用一下这个方法(添加系统回调)
      - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
      {
          BOOL result = [UMSocialSnsService handleOpenURL:url];
          if (result == FALSE) {
              //调用其他SDK,例如支付宝SDK等
          }
          return result;
      }  
    

02 手动集成微信

  • 苹果自带集成的只有新浪微博和腾讯微博,其它的微信,QQ之类的需要自己导入

  • 导入微信的Wechat

      //设置微信AppId、appSecret,分享url(先用友盟的)( AppDelegate中)
      [UMSocialWechatHandler setWXAppId:@"wxd930ea5d5a258f4f" appSecret:@"db426a9829e4b49a0dcac7b4162da6b6" url:@"http://www.umeng.com/social"];
      并在info的URL Types中添加 URL Schemes (就是:wxd930ea5d5a258f4f)
    

03 点击分享的写法

- (IBAction)clickShareBtn:(UIButton *)sender {

 [UMSocialSnsService presentSnsIconSheetView:self appKey:nil shareText:@"电视通" shareImage:[UIImage imageNamed:@"test_t108"]
    shareToSnsNames:@[UMShareToTencent,UMShareToWechatSession,UMShareToQQ] delegate:self];
}
在当前控制器遵守协议方法 
@interface ViewController ()<UMSocialUIDelegate>
//实现一个代理方法
-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response
{
    if (response.responseCode == UMSResponseCodeSuccess) {
        NSLog(@"分享成功");
    }
}

04 配置info.plist文件的跳转key(配置这个应用才能跳转到分享平台)

步骤:点击info -> open as -> Source Code 
在最后的</dict>
            </plist>
前面添加   <key>LSApplicationQueriesSchemes</key>(这个直接在友盟那边有的)
//下面是整个key
 <key>LSApplicationQueriesSchemes</key>
    <array>
        <!-- 微信 URL Scheme 白名单-->
        <string>wechat</string>
        <string>weixin</string>

        <!-- 新浪微博 URL Scheme 白名单-->
        <string>sinaweibohd</string>
        <string>sinaweibo</string>
        <string>sinaweibosso</string>
        <string>weibosdk</string>
        <string>weibosdk2.5</string>

        <!-- QQ、Qzone URL Scheme 白名单-->
        <string>mqqapi</string>
        <string>mqq</string>
        <string>mqqOpensdkSSoLogin</string>
        <string>mqqconnect</string>
        <string>mqqopensdkdataline</string>
        <string>mqqopensdkgrouptribeshare</string>
        <string>mqqopensdkfriend</string>
        <string>mqqopensdkapi</string>
        <string>mqqopensdkapiV2</string>
        <string>mqqopensdkapiV3</string>
        <string>mqzoneopensdk</string>
        <string>wtloginmqq</string>
        <string>wtloginmqq2</string>
        <string>mqqwpa</string>
        <string>mqzone</string>
        <string>mqzonev2</string>
        <string>mqzoneshare</string>
        <string>wtloginqzone</string>
        <string>mqzonewx</string>
        <string>mqzoneopensdkapiV2</string>
        <string>mqzoneopensdkapi19</string>
        <string>mqzoneopensdkapi</string>
        <string>mqqbrowser</string>
        <string>mttbrowser</string>

        <!-- 支付宝 URL Scheme 白名单-->
        <string>alipay</string>
        <string>alipayshare</string>


        <!-- 人人 URL Scheme 白名单-->
        <string>renrenios</string>
        <string>renrenapi</string>
        <string>renren</string>
        <string>renreniphone</string>

        <!-- 来往 URL Scheme 白名单-->
        <string>laiwangsso</string>

        <!-- 易信 URL Scheme 白名单-->
        <string>yixin</string>
        <string>yixinopenapi</string>

        <!-- instagram URL Scheme 白名单-->
        <string>instagram</string>

        <!-- whatsapp URL Scheme 白名单-->
        <string>whatsapp</string>

        <!-- line URL Scheme 白名单-->
        <string>line</string>

        <!-- Facebook URL Scheme 白名单-->
        <string>fbapi</string>
        <string>fb-messenger-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>
    </array>


//
然后在info -> open as -> proprety plist 中查看
#完成以上四个步骤就已经可以进行微信分享了,要真机测试分享出来的内容是我自己写的。但是来源会显示友盟自己在微信上申请的应用名

05 手动集成新浪微博

1.导入SinaSSO ,要导入一个依赖库:ImageIO
2. AppDelegate中
     导入新浪头文件#import "UMSocialSinaSSOHandler.h"
3.//配置新浪
    //第一个参数为新浪appkey,第二个参数为新浪secret,第三个参数是新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。
    [UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"3921700954"
                     secret:@"04b48b094faeb16683c32669824ebdad"
                      RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];

4.在info中加URL Types 
新浪的URL Schemes 是 wb 加上 appkey 
              wb3921700954
5.要想分享到新浪微博必须加下面的东东
# Build Settings -> 搜索 other link  -> 在 Other Linker Flags 中添加 -ObjC (注意O和C是大写的)

06 手动集成QQ

1.一样先导入QQ的框架:TencentOpenAPI
2.获得授权
 [UMSocialQQHandler setQQWithAppId:@"100424468" appKey:@"c7394704798a158208a74ab60104f0ba" url:@"http://www.umeng.com/social"];
3.配置URL schemes(从分享平台跳转回当前应用)
QQ:需要配置两个
3.1 :“QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ05FC5B14”
3.2:"tencent"+腾讯QQ互联应用appId,例如“tencent100424468

07 三方登录

1.三方登录就好办了,直接在登录平台按钮的方法里将友盟写的各个平台的代码复制过来就好
2.注意有些三方平台是需要获得登录权限的(一般就是要收费,如微信)
3.我们在打印信息中就可以拿到用户三方平台的昵称,账号,头像等公共信息做一个快捷登录

23.友盟分享SDK的集成步骤

同上  

参考链接

25.什么是线程

线程,有时被称作轻量级进程,是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针,寄存器集合和堆栈组成。通常意义上,一个进程由多个线程组成,各个线程之间共享程序内存空间和一些进程级资源。

线程的访问非常自由,它可以访问进程内存里所有数据,甚至包括其他线程的堆栈,但实际运用中线程也有自己的私有存储空间包括:栈,线程局部存储,寄存器。

线程至少有三个状态:运行,就绪,等待。改变线程优先级一般有三种方式:用户指定优先级,根据等待状态的频繁程度改变优先级,长时间得不到执行。线程主动放弃执行:等待事件,主动放弃。

26.线程和进程的区别

  1. 一个程序至少要有进程,一个进程至少要有一个线程.
  2. 进程:资源分配的最小独立单元,进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
  3. 线程:进程下的一个分支,是进程的实体,是CPU调度和分派的基本单元,它是比进程更小的能独立运行的基本单位,线程自己基本不拥有系统资源,只拥有一点在运行中必不可少的资源(程序计数器、一组寄存器、栈),但是它可与同属一个进程的其他线程共享进程所拥有的全部资源。
  4. 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。
  5. 进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。
  6. 但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

27.系统创建多线程的方式有哪几种,分别是什么,各自的优点

多线程的概念: 情况下,UI的操作都是在主线程中进行的,如果涉及到文件的下载、图片的加载、音视频的播放等耗时操作时,在主线程中直接进行的话,会造成主界面假死(主线程堵塞),所有可以使用多线程处理耗时操作,重新开辟新的子线程,用于处理耗时操作,操作完成之后回到主线程刷新UI
分类:
同步串行:不开新线程 任务依次执行
同步并行:不开启新线程 任务依次执行
异步串行:开启新线程 任务依次同时执行
异步并行:开启新线程 多个任务同时执行
无论是串行还是并行,在同一个线程中同步执行任务,都是按照顺序一个一个执行,等待队列中的任务全部执行完成之后再接着执行
异步执行任务,所有任务同时执行,不会做任何等待

完整链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,820评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,648评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,324评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,714评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,724评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,328评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,897评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,804评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,345评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,431评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,561评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,238评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,928评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,417评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,528评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,983评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,573评论 2 359

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,293评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,702评论 18 139
  • iOS面试题:腾讯一面以及参考思路:http://www.jianshu.com/p/c2048ae9d799iO...
    th先生阅读 751评论 0 2
  • 我为什么没有借他:一、我并不觉得自己已经有钱到了10万元也是随随便便地时候;二、我并不认为,买这辆车是他的刚需。 ...
    zoe兰阅读 560评论 0 0
  • 1. 从我记事起,我就向往远方,因为小时候我的妈妈实行棍棒教育,我感受不到家的温暖,我一直渴望自己快点长大,快点离...
    柳木雨阅读 1,085评论 7 22