码迷,mamicode.com
首页 > 其他好文 > 详细

Objective-C 类方法 self关键字

时间:2015-06-24 16:01:45      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:

NSString基本使用 

#import <Foundation/Foundation.h>

int main() {
    //最简单的创建字符串的方式
    NSString *str = @"大武汉";
    NSLog(@"我在%@", str);
    
    //另一种创建字符串的方式
    int age = 15;
    int no = 5668;
    NSString *name = @"黄祎a";
    NSString *newStr = [NSString stringWithFormat : @"My age is %i and My no is % i and My name is %@", age, no, name];
    NSLog(@"---------%@", newStr);
    
    //获取字符串的长度
    int size = [name length];
    NSLog(@"名字的长度是%i", size);
    return 0;
}

类方法

#import <Foundation/Foundation.h>

@interface Person : NSObject
+ (void) test;
@end

@implementation Person
+ (void) test {
    NSLog(@"hello world");
}
@end

int main() {
    [Person test];
    return 0;
}

/*
 对象方法
    以 - 开头 <只能>由对象调用
    对象方法可以使用成员变量
    相对而言效率低
 
 类方法
    以 + 开头 <只能>由类调用
    类方法不能使用成员变量
    相对而言效率高
 
 一个类中允许出现对象方法名 = 类方法名
 */ 

self关键字

#import <Foundation/Foundation.h>

@interface Person : NSObject {
    @public
    int _age;
}
- (void) show;
- (void) test1;
- (void) test2;
@end

@implementation Person
- (void) show {
    NSLog(@"Person的年龄是%i", _age);
}
- (void) test1 {
    int _age = 20;
    NSLog(@"Person的年龄是%i", _age);
}
- (void) test2 {
    int _age = 30;
    NSLog(@"Person的年龄是%i", self->_age);
}
@end

int main() {
    Person *p = [Person new];
    [p show];
    [p test1];
    [p test2];
    return 0;
}

//当成员变量和局部变量同名 采取就近原则 访问的是局部变量
//用self可以访问成员变量 区分成员变量和局部变量

/** 使用细节 **/
//出现的地方: 所有OC方法中(对象方法|类方法) 不能出现在函数中
//作用: 使用‘self->成员变量名‘访问当前方法调用的成员变量; 使用‘[self 方法名]‘用来调用方法(对象方法|类方法)

/** 常见错误 **/
//用self去调用函数
//类方法中使用self调用对象方法 对象方法中使用self调用类方法
//self死循环

Objective-C 类方法 self关键字

标签:

原文地址:http://www.cnblogs.com/huangyi-427/p/4597738.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!