zoukankan      html  css  js  c++  java
  • IOS学习笔记 -- 基础MVC初学习

    1. @property的参数说明
    ARC是苹果为了简化程序员对内存的管理,推出的一套内存管理机制
    使用ARC机制,对象的申请和释放工作会在运行时,由编译器自动在代码中添加retain和release
    1> strong:强指针引用的对象,在生命周期内不会被系统释放
    在OC中,对象默认都是强指针
    2> weak:弱指针引用的对象,系统会立即释放
    弱指针可以指向其他已经被强指针引用的对象

    @property参数使用小结:
    1> 控件用weak
    2> 属性对象用strong
    3> 非对象类型用assign
    4> 字符串NSString用copy

    提示:在纯手码实现界面布局时,如果通过懒加载处理界面控件,需要使用strong强指针

    2. 关于九宫格布局的计算方法
    能够公用的常量尽量给抽取出来,以便增加九宫格布局的灵活性,尽量保证做到:
    1> 根据要显示的数据自动调整小格子的位置和数量
    2> 一旦调整了要显示的列数,仅需要修改少量的数值即可做到

    3. 关于UIButton的一些补充
    3.1 按钮的类型
    在iOS的控件中,只有UIButton提供了类方法,可以在实例化按钮时指定按钮的不同类型。
    UIButtonTypeCustom和[[UIButton alloc] init]是等价的
    3.2 修改按钮字体
    在UIButton中有两个对象属性是定义了readonly的:
    1> titleLabel
    2> imageView
    @property中readonly表示不允许修改这两个对象属性的指针地址,但是可以修改其内部的属性

    注意:由于按钮的字体大小是所有状态共用的,因此可以通过
    button.titleLabel.font= [UIFont systemFontOfSize:14.0];
    修改按钮标签文本的字体大小

    但是不能使用 ( button.titleLabel.text = @"下载"; ) 代码设置按钮标签的文本内容,因为按钮标签的文本内容是跟按钮的状态相关的,按钮的默认和高亮状态的文字可能是不同的。

    4. 块动画

    4.1 首尾式动画
    如果只是修改控件的属性,使用首尾式动画还是比较方便的,但是如果需要在动画完成后做后续处理,就不是那么方便了
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:动画持续时间];
    // 修改属性的动画代码
    // ......
    [UIView commitAnimations];

    4.2 块动画
    块动画相对来说比较灵活,尤为重要的是能够将动画相关的代码编写在一起,便于代码的阅读和理解,在IOS中基本都使用块动画
    [UIView animateWithDuration:2.0 animations:^{
    // 修改控件属性动画
    label.alpha = 0.0;
    } completion:^(BOOL finished) {
    // 删除控件
    [label removeFromSuperview];
    }];

    5. 字典转模型
    5.1 字典转模型的好处:
    1> 降低代码的耦合度
    2> 所有字典转模型部分的代码统一集中在一处处理,降低代码出错的几率
    3> 在程序中直接使用模型的属性操作,提高编码效率

    模型应该提供一个可以传入字典参数的构造方法
    - (instancetype)initWithDict:(NSDictionary *)dict;
    + (instancetype)xxxWithDict:(NSDictionary *)dict;

    5.2 instancetype & id
    1> instancetype在类型表示上,跟id一样,可以表示任何对象类型
    2> instancetype只能用在返回值类型上,不能像id一样用在参数类型上
    3> instancetype比id多一个好处:编译器会检测instancetype的真实类型

    5.3 在模型中添加readonly属性
    // 定义属性时,会生成getter&setter方法,还会生成一个带下划线的成员变量
    // 而如果是readonly属性,则只会生成getter方法,同时没有成员变量
    @property (nonatomic, strong, readonly) UIImage *image;

    @interface LFAppInfo()
    {
    UIImage *_imageABC;
    }
    - (UIImage *)image
    {
    if (!_imageABC) {
    _imageABC = [UIImage imageNamed:self.icon];
    }
    return _imageABC;
    }
    在模型中合理地使用只读属性,可以进一步降低代码的耦合度。

    5.4 使用数据模型的好处:
    *** 调用方不用关心模型内部的任何处理细节!

    6. XIB
    Xib文件可以用来描述某一块局部的UI界面
    XIB & Storyboard
    相同点:
    1> 都用来描述软件界面
    2> 都用Interface Builder工具来编辑
    不同点
    1> Xib是轻量级的,用来描述局部的UI界面
    2> Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系

    7. View的封装思路
    1> 如果一个view内部的子控件比较多,一般会考虑自定义一个view,把它内部子控件的创建屏蔽起来,不让外界关心
    2> 外界可以传入对应的模型数据给view,view拿到模型数据后给内部的子控件设置对应的数据

    8. xcode一些常用快捷键

    新建
    shift + cmd + n 新建项目
    cmd + n 新建文件

    视图
    option + cmd + 回车 打开助理编辑器
    cmd + 回车 显示主窗口
    cmd + 0 导航窗口
    option + cmd + 0 工具窗口

    在.m & .h之间切换 control + cmd + 上/下
    按照浏览文件的前后顺序切换 control + cmd + 左右

    查看头文件 control + cmd + j
    切换到对应的函数 control + 6 支持智能输入,注意输入法

    运行
    cmd + r 运行
    cmd + . 停止
    cmd + b 编译
    cmd + shift + b 静态内存分析编译,可以检查程序结构上是否存在内存泄露

    排版
    control + i 将选中按钮重新缩进
    cmd + ] 向右增加缩进
    cmd + [ 向左减少缩进
    cmd + / 注释/取消注释,提示:取消注释时,注释双斜线必须在行首
    cmd + 向上 到文件开始位置
    cmd + 向下 到文件末尾位置

  • 相关阅读:
    hdu 5446 Unknown Treasure lucas和CRT
    Hdu 5444 Elven Postman dfs
    hdu 5443 The Water Problem 线段树
    hdu 5442 Favorite Donut 后缀数组
    hdu 5441 Travel 离线带权并查集
    hdu 5438 Ponds 拓扑排序
    hdu 5437 Alisha’s Party 优先队列
    HDU 5433 Xiao Ming climbing dp
    hdu 5432 Pyramid Split 二分
    Codeforces Round #319 (Div. 1) B. Invariance of Tree 构造
  • 原文地址:https://www.cnblogs.com/wentianblog/p/3748497.html
Copyright © 2011-2022 走看看