Objective-C( 文法一)

來源:互聯網
上載者:User

標籤:

點文法

點文法的本質是方法調用

成員變數的範圍

@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;

}

Objective-C( 文法一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.