zoukankan      html  css  js  c++  java
  • IOS学习笔记2—Objective C—类、属性、方法

    以下是我学习IOS开发的一些笔记和心得,贴出来和大家一同分享,也希望大家能补充和纠错,共同进步

    有Android和IOS开发问题也希望能和大家交流!

     

    Objective-C

    1.OC是一门基于C的面向对象语言,是C语言的一个超集,同时具有C语言的特征

     

    2.OC对类的定义和实现以及初始化

     

         //声明类接口,继承NSObject对象(该对象是OC中所有类的顶级父类,所有类都继承于它)

        @interface ClassName :NSObject 

              //成员属性和成员函数的声明

              +(void)function;//类方法,不需要实例化对象就可以调用的方法

              - (void)function2 :(NSString *)arg;//成员方法,必须通过实例化的对象调用

        @end

     

         //实现类

        @imlementation ClassName

              //成员属性初始化和方法的定义

        @end

     

        对象的初始化:ClassName *obj = [[ClassName alloc] init]

        OC中以消息机制传递信息,发送alloc消息给类分配内存空间,发送init消息生成对象,指针指向对象本身。

     

    3.类方法的调用

         [obj function];

         NSString *str = [NSString stringWithString:@"hello"];

         [obj function2 : str];

     

    4.输出函数

         根据不同的输出格式输出不同的值 (%d :整形 ,%@:对象<发送description消息>,%s:字符串)

         NSlog(@“The result is %d”,intNum); 

         

         CF代表Core Foundation (Cocoa)

         CFShow发送description给它显示的对象,CFShow打印的信息不会显示时间戳,NSLog会显示,同时CFShow不需要格式字符                 串,它只能用于对象

         CFShow(obj);

     

    5.属性

         支持点表示法:myTableViewCell.textLabel.text = @"hello" 等价于 [[myTableViewCell textLabel] setText:@"hello"];

     

         使用属性生成器 property

         在h文件中声明: @property int year

         在m文件中合成生成器:@synthesize year

         使用 obj.year = 1999 相当于调用了 [obj setYear:1999];

     

         可以自定义取值方法和赋值方法(getter and setter)

         -(int)year

         {

              return year;

         }

     

         - (void) setYear : (int) newYear

         {

              //此处添加了一些基本的内存管理方法,保留新的值,释放以前的值

              if(newYear != year)

              {

                   [year release];

                   year = [newYear retain];

              }

         }

     

         也可以绕过oc的命名约定,自己指定getter和setter方法的名称;

         @property(getter = isExist,setter = setExist:) BOOL exist;

         @synthesize exist;

         使用过程中既可以使用新定义的方法名,也可以使用以前的方法(点表示法)

     

         属性的特性:readwrite readonly assign retain copy nonatomic 

         assign:默认行为,使用@property int year就使用了assign行为,就是给实例变量赋了一个值

         retain:实现了两个功能,一个是保留了赋值时传递的对象,其次是赋值前释放了以前值,使用retain可以实现上面讨论的内存管理的优点,使用时加上 @property (retain)int year;

         copy:发送一条复制的消息给被传递的对象,保留它,并释放任何以前的值;

         nonactomic:非原子访问器,加上后可以提升访问速度,但当两个线程同时修改同一个属性时就会出现问题,原子属性可以保证属性在被一个线程使用时不被另一个线程访问,不存在atomic关键字,默认情况下,所有方法都是自动合成的。(类似与java中的线程锁机制synchronized)

         readwrite:可读写     

         readonly:只读

         

     

    加入我们的QQ群或微信公众账号请查看:Ryan's zone公众账号及QQ群

  • 相关阅读:
    SharePoint Timer Job
    内容查询部件 之 简单美化
    SharePoint list Search
    Sharepoint 2010 Content Search Webpart
    如何添加Features,处理自己的程序
    SharePoint 读取 UserMulti 类型的字段
    SharePoint 账号
    配制备用访问映射
    项目管理汇总
    Altium Desgner软件,PCB设计中铺铜的作用
  • 原文地址:https://www.cnblogs.com/motoyang/p/4783286.html
Copyright © 2011-2022 走看看