• ios 开发小记 (三)


    iOS开发常见问题:

    1、单元测试时,cocoaPods报错

    platform :ios, '7.0'

    pod "AFNetworking", "~> 2.0"

    pods 文件原来是这样。

    在用了xctest之后,就报错了:AFNetworking Cause Error while using XCTest in Xcode5。

    要在中间加一句:

    link_with 'Supermark', 'SupermarkTests'

    2、xcode 的使用

     -objc 的意思:

    之所以使用该标志,和Objective-C的一个重要特性:类别(category)有关。根据这里的解释,Unix的标准静态库实现和Objective-C的动态特性之间有一些冲突:Objective-C没有为每个函数(或者方法)定义链接符号,它只为每个类创建链接符号。这样当在一个静态库中使用类别来扩展已有类的时候,链接器不知道如何把类原有的方法和类别中的方法整合起来,就会导致你调用类别中的方法时,出现"selector not recognized",也就是找不到方法定义的错误。为了解决这个问题,引入了-ObjC标志,它的作用就是将静态库中所有的和对象相关的文件都加载进来。
     
     
     
    ios 全局包含的头文件
    .pch
     
     
    arc 和 非 arc 混用的时候:
    如果是arc中使用非arc的,对不需要arc的文件添加: -fno-objc-arc。编译标示。
     
     
     
    xcode的group如何与文件夹对应:(双击show in finder能直接显示该文件夹)
    直接删除这个group,记得选reference,不要move to trash。
    然后整个文件夹添加进来即可。
    注意:这样文件夹里面的所有文件的编译选项需要重新设置,后期慎用这个功能。
     
     
     3、UIKit - UILabel
    warning:
    Automatic Preferred Max Layout Width is not available on iOS versions prior to 8.0
     
    UILabel 的 使用了 Preferred Max Layout Width 這個屬性造成 numberOfLines 屬性只要不是  1 就會造成這個警告
     解决方案:
    1升级到ios8以上 
    2把label的这个选项值修改为非默认值
     
     
    4、UIViewController 生命周期
    UIViewController的view是lazy loading的,当你访问其view属性的时候,它会从xib文件载入或者通过代码创建(覆盖loadView方法,自定义其view hierarchy),并返回view对象,如果要判断一个View Controller的view是否已经被加载需要通过其提供的isViewLoaded方法来判断。 
    view加载后viewDidLoad会被调用,这里可以进行一些数据的请求或加载,用来更新你的界面。 
     
    view将被加入view hierarchy中的时候viewWillAppear会被调用,view完成加入的时候viewDidAppear会被调用,同样当view将要从view hierarchy中移除的时候viewWillDisappear会被调用,完成移除的时候viewDidDisappear会被调用。 
    当内存紧张的时候,所有的UIViewController对象的didReceiveMemoryWarning会被调用,其默认实现是 如果当前viewController的view的superview是nil的话,则将view释放且viewDidUnload会被调用,viewDidUnload中你可以进行后继的内存清理工作(主要是界面元素的释放,当再次加载的时候需要重建)。
     
     
     
    controller之间的关系:
    其实显示或者旋转的回调的触发的源头来自于window,一个app首先有一个主window,初始化的时候需要给这个主window指定一个rootViewController,window会将显示相关的回调(viewWillAppear:, viewWillDisappear:, viewDidAppear:, or viewDidDisappear: )以及旋转相关的回调(willRotateToInterfaceOrientation:duration: ,willAnimateRotationToInterfaceOrientation:duration:, didRotateFromInterfaceOrientation:)传递给rootViewController。rootViewController需要再将这些callbacks的调用传递给它的Child View Controllers。
     
     
     
    以上内容有部分来自互联网,侵权请联系我(留言、评论均可),马上删除。
     
     
     
  • 相关阅读:
    c/c++指针
    C++小思
    gvim-ide plugins
    Windows下文件的所有和权限
    C++枚举类型
    linux的cgroup控制
    linux的free命令
    linux下可以禁用的一些服务
    bat programming is easy and powerful
    c++类定义代码的分离
  • 原文地址:https://www.cnblogs.com/loying/p/4824532.html
Copyright © 2020-2023  润新知