• Objective-C( 语法一)


    点语法

    点语法的本质是方法调用

    成员变量的作用域

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

     @private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private)

          子类如果想访问通过setter  getter方法访问

     @protected : 可以在当前类及其子类的对象方法中直接访问

           (@interface中默认是@protected)

     @package : 只要处在同一个框架中,就能直接访问对象的成员变量

          一般用不到,直接用系统自带框架

    @interface和@implementation中不能声明同名的成员变量

    在@implementation中也能写成员变量,不用声明,可直接写set get方法

    @implementation  Class : NSObject

    {

        int _a;// 默认是私有

    }

    - (void)setA:(int)a

      _a = a;

    -(int)a

    {

      return  _a;

    }

    @end

    @property 可以自动生成某个成员变量的setter和getter的声明

    @interface  Class : NSObject

    {

    int  _a;

    double  _b;

    }

    @property int a;

    @property double b;

    @end

    @synthesize:自动生成a的setter和getter的实现并且访问_a这个成员变量

    会访问_a这个成员变量,如果这个成员变量不存在,就自动生成@private类型的_a变量

    @implementation Class

    @synthesize  a = _a;

    @synthesize  b = _b;

    @end

    Xcode 4.4版本后,@property就独揽了@synthesize功能,就是说@property可以同时声成setter和getter的声明和实现

    默认情况下 setter 和getter方法的实现,会访问下划线_开头的成员变量

    id类型

    id:万能指针,能指向/操作任何OC对象  id ==NSObject *

    注意id后面不要加*

     

    构造方法:用来初始化对象的方法,是个对象方法 

    重写构造方法目的:让创建出来的对象里的成员变量有一些固定的值

    重写init方法:

    // 1.一定要调用super的init方法:初始化父类中声明的一些成员变量和其他属性

    例  - (id)init

        {

        self = [super init]; // 当前对象 self

    // 2.如果对象初始化成功,才有必要进行接下来的初始化

        if (self != nil)

        {

          _age = 10;

        }

        return self;

        }

    在@implementaion  类名

    - (id)init

    {

      if (self = [super init])

      {

        _age = 10;

      }

      return self

    }

    @end中重写

    自定义构造方法:

    规范:

    1.一定是对象方法,一定以 _ 开头

    2.返回值id类型

    3.方法名以initWith开头

    1.声明在@interface  中 @end上面

    例 @interface Person :NSObject

    @property NSString *_name;

    - (id)initWithName:(NSString *)name;

    @end

    2.实现在@implementation 中 @end 上面

    例 @implementation Person

    - (id)initWithName:(NSString *)name

    {

      if (self = [super init])

      {

        _name = name;

      }

        return self;

    }

    @end

    main.m文件中:

    int main()

    {

      Person *p = [[Person alloc] initWithName:@"rose"]

      return 0;

    }

  • 相关阅读:
    R-时空可视化
    zz温故知新:Tomcat调优&JVM内存性能调优
    《CarbonData》
    《RocketMQ》
    《LinuxTools》
    《为什么说 Prometheus 是足以取代 Zabbix 的监控神器?》
    《Zabbix》
    zz《百度地图商业选址》
    《Dapper》
    BZOJ 1601: [Usaco2008 Oct]灌水 最小生成树_超级源点
  • 原文地址:https://www.cnblogs.com/1023843587qq/p/4746199.html
Copyright © 2020-2023  润新知