打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
IOS之学习笔记三(简单对象和static和单例)

1、Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    NSString *_name;
    int _age;
}  
-(void)setName:(NSString *) name andAge:(int) age;
-(void)say:(NSString *)content;
-(NSString *)info;
+(void)foo;
@end


Person.m

#import "Person.h"

@implementation Persion 
{
    int test;
}

-(void)say:(NSString *)content
{
    NSLog(@"%@", content);
}

-(NSString *)info
{
    [self test];
    return [NSString stringWithFormat:@"名字:%d, 年龄%d,", _name, _age];
}

+(void)foo 
{
    NSLog(@"通过类名调用");
}

-(void)test
{
    NSLog(@"this is a test method");
}
@end

-(void)setName:(NSString *) _name andAge:(int) _age
{
    //记得这里是self->_name不是self._name,一定要注意。
    self->_name = _name;
    self->_age = _age;
}

Person *person = [[Person alloc] init];
[person say:@"hello"];
[person setName:@"chenyu" andAge:26];
NSString *info = [person info];
NSLog(@"info is %@", info);
[Persion foo];

2、id类型可以代表所有对象的类型,可以任何类的对象赋值给id类型变量

id p = [[Person alloc] init];
[p say:@"hello"];

3、oc没有类变量,但是可以通过内部全局变量来模拟类变量
oc也提供了static关键字,但是static不能用于修饰成员变量,只能修饰局部变量,全局变量和函数,static修饰局部变量表示将该局部变量存储在静态存储区,static修饰全局变量用于限制全局变量只能在当前源文件中访问,static修饰函数用于限制函数只能在当前文件中调用

模拟类变量

User.h文件如下

#import <Foundation/Foundation.h>
@interface User : NSObject
+(NSString *)nation;
+(void)setNation:(NSString *)newNation;
@end

User.m文件如下

#import "User.h"
@implement User 
static NSString *nation = nil;
+(NSString *)nation
{
    return nation;
}
+(void)setNation:(NSString *)newNation
{
    nation = newNation;
}
@end

int main(int argc, char* argc[]) 
{
    @autoreleasepool {
[User setNation:@"chenyu"];
        NSLog(@"nation is %@", [User nation]);
    }
}

4、单例模式

Singleton.h文件如下

#import <Foundation/Foundation.h>
@interface Singleton : NSObject
+(id)instance;
@end

Singleton.m文件如下

@implemnet Singleton
static id instance = nil;
+(id)instance 
{
   if (instance) 
   {
       instance = [[super malloc] init];
   }
   return instance;
}
@end

int main(int argc, char* argc[]) 
{
    @autoreleasepool {
        NSLog(@"%d", [Singleton instance] == [Singleton instance]);
    }
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
常见设计模式--C++基础
Java单例模式深入详解
C++中实现Singleton的正确方法
Java设计模式很难吗,这篇带你熟悉设计模式
Java基础之 静态变量,方法和类以及Singleton模式
使用private构造器 or 枚举的原生语言实现单例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服