zoukankan      html  css  js  c++  java
  • QF——网络之知识碎片

    1.URL中文问题:

    URL不支持中文。若出现中文,需要对URL进行utf-8编码。

    NSString *urlString = [kULRSTRING stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    2.把UIImage转换成二进制数据NSData:

    第一行:把png图片转换为二进制数据; 第二行:把jpeg图片转换为二进制数据

      

    3.NSString和NSData的互相转换: 


    4.一次性设置所有导航条的背景图片:

        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationbar"] forBarMetrics:UIBarMetricsDefault];

    5.一次性关闭所有导航条的半透明:

      [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

    等效于被注释掉的部分:

    OC只允许单继承,多接口。

    通过继承可以获得其他类的属性和方法;通过实现接口可以获得其他类的方法。

    既然OC是单继承的,那我怎么获得多个父类的属性??

    —————————————————————————————————————————— 

    JSON文档中的数据类型:

    “123” ——>NSString

    123 ——>NSNumber

    null ——>NSNull

    —————————————————————————————————————————— 

    nil和NULL的区别:

    —————————————————————————————————————————— 

    用xib创建视图,走的是awakeWithNib构造函数;用代码创建的视图,走的是init构造函数。

     —————————————————————————————————————————— 

    怎么获得手机的系统版本?

      float version = [[[UIDevice currentDevice] systemVersion] floatValue];

     —————————————————————————————————————————— 

    聊天气泡的拉伸:

      俩参数为设置图片的像素位置,使图片在该点拉伸,而不会整体拉伸。

      - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight;

     —————————————————————————————————————————— 

    去掉cel的分割线:

      tabView.separatorStyle = UITableViewCellSeparatorStyleNone; 

     —————————————————————————————————————————— 

    使cell无点击选中效果:

        self.selectionStyle = UITableViewCellSelectionStyleNone;

    ——————————————————————————————————————————  

     iOS观察者模式,及应用(通知中心,KVO,Delegate):  http://blog.csdn.net/xdrt81y/article/details/24039163

      当我们对某对象的属性改变敏感时,可以给它注册观察者,当该对象的属性值发生变化时,会通知我们,会自动调用回调函数。

      1.给某对象注册观察者,观察它的某属性; 

    ——————————————————————————————————————————  

    根据文本内容,自动计算其尺寸:

    - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context 

    —————————————————————————————————————————— 

    在block外创建的对象,不能在block里直接使用,因为block和主程序执行是异步的,block执行时该对象已被销毁。所以说,,,__block 关键字的本质是拷贝了一份原来对象么???

    ————————————————————————————————————————————

     

    ————————————————————————————————————————————

    iPad开发与适配:

      分割视图,需要同时存在两个viewController. 和tabbarViewController很相似,相当于一个容器,里面可以装VC和navC

      webView,也是继承自scrollView。只要能滚动的视图都继承自scrollView,

     

    —————————————————————————————————————————

      根据字符串str,求以它为前缀的字符串。

    —————————————————————————————————————————

    常见容器视图:

      UITabBarController, UINavigationController(导航控制器), UISplitViewController (分割视图,ipad)

    —————————————————————————————————————————

    iOS的国际化:http://www.cnblogs.com/qingjoin/p/3899265.html

    —————————————————————————————————————————

    storyboard,它和xib的区别:

    在一个storyboard里可以布局多个界面视图,并且能清晰的体现他们之间的关系结构,而且storyboard能完成界面跳转。

    界面跳转:segue

    点击进入链接

    push,modal,custom三种跳转方式的区别?

    —————————————————————————————————————————

    代码版本管理工具:svn 和 git

    svn:

      第一次取代码:checkout;

      更新代码:updata;

      提交代码:commit。

    写完自己的代码,先updata再commit。

    http://www.cnblogs.com/ludashi/p/4018245.html

     —————————————————————————————————————————

    解决键盘遮挡输入框的几种方案:

    1.当textfield被点击后弹出键盘,并且使整个view上移键盘的高度。当endediting,隐藏键盘的同时再调低view的高度。

    2.利用UIKeyboardDidShowNotification

     —————————————————————————————————————————

    学生代码管理
    
    http://10.2.100.8/stuproj/1502/[名字拼音]_PocketKitchen.git

     —————————————————————————————————————————

     id和instancetype的区别:

    id是任意类型,类型提升;

    instancetype是指生成当前类的类型,是哪个类,就是哪个类型。(若是YWViewController,为什么不写明是YWViewController呢?答案是复制方便。写instancetype是动态实时的获取类型的)

     —————————————————————————————————————————
    iOS定制控件:

    http://www.cocoachina.com/industry/20131104/7287.html?utm_source=tuicool

    http://blog.csdn.net/zhanghanming199038/article/details/8755680

     —————————————————————————————————————————

    模态视图控制器:

      —————————————————————————————————————————

    以前在做界面中的一条线的方法是通过调整UILabel的宽高来实现的。但更高级的方法是用用绘图API完成。

      —————————————————————————————————————————

    iOS响应者链

      —————————————————————————————————————————

    很多时候我们要把从网络解析来的dict装入model,这时我们可以利用KVC的setValuesForKeysWithDictionary:方法来一次性的赋值,很方便,但它的弊端是不太安全,若写错key,则key和model里的属性对应不上,就会报错。这时我们应该重写两个方法。

      —————————————————————————————————————————

    viewDidLoad方法里一般写:1.初始化一些数据(数组,字典等);2.UI布局;3.加载数据(网络请求或者本地加载)

    重写原来的解析器方法,以自定义一个更适合自己的JSON解析器。

    AFHTTP,请求网络方法几个步骤,封装成一个方法。是请求网络只需调用这一个方法即可。

    网络请求方法GET的返回类型是AFHTTPRequestOperation,但是我们在调用这个GET方法的时候没有使用变量去接收这个返回值。其实这个方法的返回值的主要用于多次中断下载,当你的APP可以一次性下载完时,就不需要它了。若是中间请求网络,下载数据的时候被中断了,下次下载的时候会从这个返回值里取得一些信息。

      —————————————————————————————————————————

    从服务器获得的日期格式是yyyy-mm-dd形式的。怎么单独获得day呢?

    我首先想到的是通过索引起始位置求子串,但这种方法不太可行,若月份天数有可能有时是一位数,有时是两位数的。

    然后想到的是字符串的分割方法   NSArray * array = [str componentsSeparatedByString:@"-"];通过-来分割字符串。

      —————————————————————————————————————————

    imageView里的contentMode = UIViewContentModeScaleAsPectFill

    —————————————————————————————————————————

    CoreData:映射。数据库表和model属性的映射。

    FMDB不支持多线程,所以FMDB官方建议使用DatabaseQuene

    MFDB批量更新数据库:http://blog.csdn.net/x32sky/article/details/18965155        

    —————————————————————————————————————————

    在写单例方法时,加锁可以用@sy... 那种方法,但现在比较流行gcd多线程加锁的方式。

        static dispatch_once_t token;

        dispatch_once(&token, ^{

            _appSupport = [[QFAppSupport alloc] init];

        });

    —————————————————————————————————————————

    iOS 编程实战 最新版 (下载pdf)

    —————————————————————————————————————————

    present,dismiss和push,pop的区别;

    前两者适用于所有的界面,而后两者是导航控制器中的内容,只有该界面是装入导航控制器的,才能用push和pop,它跳转的界面之间是层结构(栈结构);而前两者是跳转的界面是平行的。

    —————————————————————————————————————————

    cookMenuVC.title = @"菜谱";这样写在tabBar和navBar中都会有title;

    cookMenuNavC.tabBarItem.title = @"ca"; 这样写只在tabBar中又title

    —————————————————————————————————————————

    原子性,非原子性。

    —————————————————————————————————————————

    iOS7以后默认都有返回滑动手势,在屏幕左边缘向右滑动,就会返回上一层页面(相当于pop)。但是如果自定义了navgationBar的Back按钮,则就关闭了该返回手势,所以,此时我们得手动开启它。

    —————————————————————————————————————————

    iOS里实现回调的方式:

    1.代理

    2.block

    —————————————————————————————————————————

    GCD:

    dispatch_async( ) 异步:函数会立即返回,block会异步执行,不阻塞

    dispatch_sync( ) 同步:函数会等待执行完毕后再返回,阻塞

    GCD中三种队列:主队列,全局队列,自创建队列

    串行队列,并发队列

    http://blog.csdn.net/springpp1990/article/details/12451913

    http://www.cnblogs.com/sell/archive/2013/02/06/2905693.html

    —————————————————————————————————————————

     APP上线后,经常会升级更新,而且数据库中的表可能会发现变化,所以要做数据库版本的控制。

    APP的图标,和启动页

    修改APP的名字

    ——————————————————————————————————————————

    Core Animation

    CALayer

    锚点

    给CollectionView添加Header

    http://my.oschina.net/zboy/blog/221525

    开发证书,推送证书,配置文件。

    真机测试

    ——————————————————————————————————————————

    ——————————————————————————————————————————

     iOS 支付宝开发步骤:

      1.去官网注册合约账号,注册后会有

    ——————————————————————————————————————————

    这两行代码都是在iOS7下修改navigationBar的背景颜色的。

        self.navigationController.navigationBar.backgroundColor = [UIColor greenColor];

        self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];

    ——————————————————————————————————————————

    设置navigationBar的文字颜色,文字字体,文字阴影等

        self.navigationController.navigationBar.titleTextAttributes = @{UITextAttributeTextColor:[UIColor whiteColor]};(会报异常)

        self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor]};(不会报异常)

     更多设置:http://www.41443.com/HTML/iphone/20141221/253422.html

        导航条的半透明开关闭到底是哪个?? self.extendedLayoutIncludesOpaqueBars = YES;

    ——————————————————————————————————————————

    用代码实现AutoLayout

    VFL语言

    但是这些都很繁琐,实际开发中我们一般使用自动布局的第三方库Masonry,用Masonry设置约束

    第三方库管理插件

     

    ——————————————————————————————————————————

    第三方登录:QQ登录

    http://blog.sina.com.cn/s/blog_92ac2c5b0101cly9.html

    ——————————————————————————————————————————

    http://blog.csdn.net/totogo2010/article/details/7645693

     

    ——————————————————————————————————————————

    当自定义的视图不是控制器时,它使没有initWithNibName这个构造方法的,要想初始化xib文件,可以使用

        NSArray * arr = [[NSBundle mainBundle] loadNibNamed:@"" owner:self options:nil];

    ——————————————————————————————————————————

    [NSString stringWithUTF8String:object_getClassName(self)] 这行可以判断当前类,所以在base中判断当前类就行了,

    ——————————————————————————————————————————

    把返回结果的处理封装在block里,(把block用typed定义成类型,然后用block作返回处理)。

    ——————————————————————————————————————————

    pch文件,(precompiled header)预编译头文件(放置重复import,重复编译)

    xcode6之后,创建项目后不会自动帮我们创建.pch文件了,当我们需要时,要我们自己手动创建。

    ——————————————————————————————————————————

    把解析的dict给model赋值,简便方法是使用KVC,model对象调用setValuesForKeysWithDictionary:

    使用KVC需要注意的地方:

    1.字段要对应,若字段不对应会奔溃。需要重写forUndefinedKey:方法,若,则不需要为他赋值

    ——————————————————————————————————————————

    回调函数一般有两种方式实现:代理模式和block  

    对block进行内存管理,要使用copy。

    ——————————————————————————————————————————

    initWithNibName等几个函数的区别:

    http://www.cnblogs.com/geraldzhang/archive/2011/09/21/2183970.html

    ——————————————————————————————————————————

    runloop:

    ——————————————————————————————————————————

      block的生命周期和内存管理  

        http://www.tanhao.me/pieces/310.html/

        http://www.cnblogs.com/tangbinblog/archive/2012/12/31/2840690.html

      初始化时是在栈上,进行copy操作是为了把block从栈上拷贝到堆上使用

      可以使用typedef定义一个block类型,便于后续使用,不过一般情况下我们不用这样,就像系统SDK一样,int (^)(int x, int y) myblock

      在block有时会陷入强引用循环的僵局,造成对象无法被释放的僵局。

      

    typedef int(^Myblock) (int, int);

    Myblock mb = ^(int x, int y){

    };

    ——————————————————————————————————————————

    1.若不是iOS7以上的应用则不通过上线;

    2.若不适配iphone6以上,则不通过上线;

    3.若应用不支持arm64设备架构,则不通过上线

    ——————————————————————————————————————————

    任务:

      换头像(图片选取器);

      第三方登录:QQ

      第三方分享:在专题详情界面添加分享功能ShareSdk

      第三方支付:

      autolayout 以及Masonry;

      定位与第三方地图接口;(LBS)

      远程推送的原理 (APNs)

      即时通讯(XMPP)

      苹果有关的所有证书。

      第三方类库管理cocopods     http://blog.csdn.net/meegomeego/article/details/24005567

      多线程,runloop

      反射机制

      NSArray和NSMutableArray在内存中的不同 :

        前者在内存中的数据结构是List,它是连续的,分配的内存是固定的;

        后者在内存中的数据结构是链表,它是不连续的。

      isMemberOfClass

      视图响应链

      事件传递机制

      drawRect方法

      iOS数据库,sqlite和CoreData

      第一响应者

      应用上线的操作流程

      代码版本控制:svn和git

     

     

     

      触摸事件的传递:由父视图传向子视图(由下而上)。若父控件不能接收触摸事件,则子控件就不可能接收到触摸事件。

     

     

      友盟的社会化分享,第三方登录,第三方推送 

      环信(第三方即时通讯)

     

     

     

     

     

     

        

     

     

      

      

     

     

     

  • 相关阅读:
    应用程序初次运行数据库配置小程序(Java版)
    (转) 移动站适配rel=alternate PC页和H5页适配标注
    (转)微信收货地址开发分享
    (转)PHP EOF(heredoc)的使用方法
    http-equiv是什么意思(转载)
    jQuery Ajax 实例 ($.ajax、$.post、$.get)
    JSON转string、JSON转Object
    php使用curl来获取远程图片
    include和require的区别
    (转)PHP获取随机数
  • 原文地址:https://www.cnblogs.com/wangerxiansheng/p/4387431.html
Copyright © 2011-2022 走看看