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;

}

原文地址:https://www.cnblogs.com/1023843587qq/p/4746199.html