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

     

     

     

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

     

     

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

      环信(第三方即时通讯)

     

     

     

     

     

     

        

     

     

      

      

     

     

     

  • 相关阅读:
    Linux IO接口 监控 (iostat)
    linux 防火墙 命令
    _CommandPtr 添加参数 0xC0000005: Access violation writing location 0xcccccccc 错误
    Visual Studio自动关闭
    Linux vsftpd 安装 配置
    linux 挂载外部存储设备 (mount)
    myeclipse 9.0 激活 for win7 redhat mac 亲测
    英文操作系统 Myeclipse Console 乱码问题
    Linux 基本操作命令
    linux 查看系统相关 命令
  • 原文地址:https://www.cnblogs.com/wangerxiansheng/p/4387431.html
Copyright © 2011-2022 走看看