zoukankan      html  css  js  c++  java
  • OC语言(三)

    十九.一些规范

    import系统自带的用尖括号<>来包含。

    发现需求不清晰,一定要先搞明白才去做。

    多文件开发,文件名和类名一致

    命令行里的做法:(只是编译链接主文件,但是全部编译链接会出错)

    1.每个文件都要引入主框架(如果使用了NSObject)
    2.如果用到了其他类,也要引入
    3.主文件要引入所有用到的类

    正式的做法:(所有文件一起编译链接)

    借鉴C语言的做法,写h文件来包含声明。

    import不要包含源文件,容易发生重复定义错误(duplicate)。

    把类的声明(@interface)放到.h文件中。

    ******定义一个类分为两个文件.h和.m
    .h:放 成员变量 和 方法的声明(@interface)
    .m:放 方法的实现(@implementation)
    主文件则用来融合所有的.h

    二十.XCode新建类

    使用Cocoa Class创建类可以同时生成.h和.m

    二十一.XCode断点调试

    设置断点,在output框上测有空心向右的箭头按钮表示前进,把鼠标暂留在变量上可以查看详细信息。

    单步按钮的前方是断点是否有效的按钮。

    删除断点:按住断点向外拖

    二十二.生成代码块

    左键长按代码块直到出现箭头,然后拖入右下角代码块内



    shortcut是触发条件,当检测到相应的输入就可以替换为相应的代码框

    二十三.特有注释

    #pragma mark xxx

    可以用索引进行定位。

    使用
    #pragma mark - xxx 可以在方法前产生横线分隔符

    特殊技巧

    #pragma mark - group1
    xx
    xx
    xx
    xx
    #pragma mark - group2
    xx
    xx
    xx
    xx

    这样可以产生两组

    二十四.多文件查看

    采用的是和视图窗口内编辑一样的方法,
    在View->Assistant内可以修改第二视窗的显示位置

    二十五.点语法

    为了兼容其他语言的点运算符。

    当编译器遇到点语法,会把点语法转化成set方法

    stu.age = 10;展开为:
    [stu setAge : 10];

    注意age并不是成员变量

    p.age 是get方法,看有没有赋值。



    前面的按钮可以在断点处跳入应该跳转的函数。

    在get和set方法中不要再用点语法,否则会引发死循环。

    点语法不是访问成员变量,而是转成set和get方法

    必须先定义set和get方法,才能使用点语法。

    二十六.成员变量作用域

    @private 只能在当前类的对象方法中实现

    @protected 只能在当前类及其子类的对象方法中实现(在声明中什么都不写默认是@protected)

    @public 任何地方都能直接访问对象的成员变量

    @package 只要处在同一个框架中,就能直接访问

    只要声明一次作用域,下面的都是该作用域。

    在实现里面定义成员变量默认私有。不要这么写,因为包含.h时不能探测到。
    因为.m不会被包含。

    虽然子类不能访问父类的私有变量,但是内存中有该变量。

    OC是单继承。

    二十七.一些编译器特性

    @property 可以自动生成某个成员变量的set和get方法声明。

    例如对于
    int _age这个成员变量:

    @property int age;

    @property后面的是对set的参数类型和get的返回值类型的说明。

    会自动变成
      set方法:
    • (void)setAge:(int)age;
      get方法:
    • (int)age;

    @synthesize 生成property的set和get实现。

    对于上面的,用@synthesize age = _age来实现。
    后面的表示真实访问的是哪个成员变量。

    小技巧:类型一样的可以写在同一行。但是一般是分开写。
    如果不写成员变量,@property会自动生成private成员变量。(加下划线的),会根据实现里面的=后面的来生成。

    Xcode4.4以后,可以只写@property。

    但是自动生成的是@private作用域。

    @synthesize age;自动生成的是age成员变量而非_age,系统会自己使用self进行区分。

    如果已经写了get或者set方法,Xcode会自动生成没有的,而不会覆盖已有的

    设成员变量为_xxx
    则get的标准写法为: 
    - (类型)xxx{
    return _xxx;
    }
    set的标准写法为:
    - (void)setXxx : (类型)xxx{
    _xxx = xxx;





  • 相关阅读:
    P2801 教主的魔法 (分块)
    BZOJ_1614_ [Usaco2007_Jan]_Telephone_Lines_架设电话线_(二分+最短路_Dijkstra/Spfa)
    BZOJ_1601_[Usaco2008_Oct]_灌水_(最小生成树_Kruskal)
    BZOJ_1612_[Usaco2008_Jan]_Cow_Contest_奶牛的比赛_(dfs)
    BZOJ_1833_[ZJOI2010]_数字计数_(数位dp)
    BZOJ_1026_[SCOI2009]_windy数_(数位dp)
    BZOJ_4326_[NOIP2015]_运输计划_(二分+LCA_树链剖分/Tarjan+差分)
    BZOJ_2194_快速傅立叶之二_(FFT+卷积)
    BZOJ_1615_[Usaco2008_Mar]_The Loathesome_Hay Baler_麻烦的干草打包机_(模拟+宽搜/深搜)
    BZOJ_1626_[Usaco2007_Dec]_Building_Roads_修建道路_(Kruskal)
  • 原文地址:https://www.cnblogs.com/aiwz/p/6154256.html
Copyright © 2011-2022 走看看