oc学习笔记2 点语法

WBOY
풀어 주다: 2016-06-07 15:00:25
원래의
1205명이 탐색했습니다.

先来几段代码,Dog类的.h .m文件 和main.m dog.h #import Foundation/Foundation.h@interface Dog : NSObject{ int _ID; NSString *_name; int _age; float _price;}//凡是用initXXX开头的都是构造函数//init方法实际上没有什么特别的,只是遵循命名约定的普

先来几段代码,Dog类的.h .m文件 和main.m

dog.h

#import <foundation>

@interface Dog : NSObject
{
    int _ID;
    NSString *_name;
    int _age;
    float _price;
}
//凡是用initXXX开头的都是构造函数
//init方法实际上没有什么特别的,只是遵循命名约定的普通方法
-(id)init;
-(id)initWithID:(int)newID;
-(id)initWithID:(int)newID andAge:(int)newAge;
-(id)initWithID:(int)newID andAge:(int)newAge andPrice:(int)newPrice;
@property int ID;
@property NSString *name;
@property int age;
@property float price;
@end</foundation>
로그인 후 복사

dog.m

#import "Dog.h"

@implementation Dog
-(id)init
{
    return [self initWithID:1001];

}
-(id)initWithID:(int)newID
{
    return [self initWithID:newID andAge:20];
}
-(id)initWithID:(int)newID andAge:(int)newAge
{
    return [self initWithID:newID andAge:newAge andPrice:80.0];
}
-(id)initWithID:(int)newID andAge:(int)newAge andPrice:(int)newPrice
{
    self=[super init];
    if(self){
        _ID=newID;
        _age=newAge;
        _price=newPrice;
    }
    return self;
}

@synthesize ID=_ID;
@synthesize name=_name;
@synthesize age=_age;
@synthesize price=_price;

@end
로그인 후 복사

main.m

#import <foundation>
#import "Dog.h"
#import "NSString+ReverseString.h"
#import "Person.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        Dog *dog1=[[Dog alloc ] init];
        dog1.name=@"syj";
        NSLog(@"%@",[dog1 name]);
        [dog1 setName:@"ldusyj"];
        NSLog(@"%@",dog1.name);
    }
    return 0;
}
</foundation>
로그인 후 복사


先看一下:

@property

@property int age;

等同于  -setAge:(int)newAge;

 -(void)age;

@synthesize

@synthesize age=_age;

等同于:  -(void)setAge:(int)newAge{

age=newAge;

} 

-(int)age{

return age;

}

在看一下点:

1.

dog1.name=@"syj";
로그인 후 복사
点放到左边相当于调用其对应的set方法。

等同

[dog1 setName:@"syj"];
로그인 후 복사
2.

NSLog(@"%@",dog1.name);
로그인 후 복사
NSLog(@"%@",[dog1 name]);
로그인 후 복사
这两种情况是相同的效果。相当于get方法。


注意:

-(void)setAge:(int)newAge 
{ 
    NSLog(@"调用了setAge方法:%i",newAge); 
    self.age = newAge; 
}
로그인 후 복사


不能在setAge:方法中使用self.age  =  newAge,相当于在setAge:方法中调用[self  setAge:newAge ], 出现死循环

-(int)age 
{ 
    NSLog(@"调用了age方法:%i",_age); 
    return self.age; 
}
로그인 후 복사

不能在age方法中使用return  self.age, 相当于return  [self age];, 出现了死循环


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!