亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

.h和.m文件中@interface定義之間的區別

.h和.m文件中@interface定義之間的區別

心有法竹 2019-11-13 12:49:05
通常我們使用@interface interface_name : parent_class <delegates>{......}@end .h文件和.m文件中的方法,我們綜合了.h文件中聲明的變量的屬性。但是在某些代碼中,此@interface ..... @ end方法也保留在.m文件中。這是什么意思?它們之間有什么區別?還請提供有關.m文件中定義的接口文件的getter和setter的一些信息...提前致謝
查看完整描述

3 回答

?
茅侃侃

TA貢獻1842條經驗 獲得超21個贊

通常會添加一個附加@interface類來定義包含私有方法的類別:


人.h:


@interface Person

{

    NSString *_name;

}


@property(readwrite, copy) NSString *name;

-(NSString*)makeSmallTalkWith:(Person*)person;

@end

人.m:


@interface Person () //Not specifying a name for the category makes compiler checks that these methods are implemented.


-(void)startThinkOfWhatToHaveForDinner;

@end



@implementation Person


@synthesize name = _name;


-(NSString*)makeSmallTalkWith:(Person*)person

{

    [self startThinkOfWhatToHaveForDinner];

    return @"How's your day?";

}



-(void)startThinkOfWhatToHaveForDinner

{


}


@end

“私人類別”(無名類別的專有名稱不是“私人類別”,它是“類擴展”)。.m防止編譯器警告已定義方法。但是,由于@interface.m文件中的。是一個類別,因此無法在其中定義ivars。


12年8月6日更新:自編寫此答案以來,Objective-C不斷發展:


ivars 可以在類擴展中聲明(并且總是可以-答案不正確)

@synthesize 不需要

ivars現在可以在大括號頂部聲明@implementation:

那是,


@implementation { 

     id _ivarInImplmentation;

}

//methods

@end


查看完整回答
反對 回復 2019-11-13
  • 3 回答
  • 0 關注
  • 857 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號