OC的一些基础知识

<a target=_blank href="http://baidu.com" target="_blank">github</a>



、//
//  LoginViewController.m
//  Contact
//
//  Created by Jiexiang on 15/11/15.
//  Copyright © 2015年 Jiexiang. All rights reserved.
//

#import "LoginViewController.h"
#import "MBProgressHUD+MJ.h"

@interface LoginViewController ()
@property (weak, nonatomic) IBOutlet UITextField *nameField;
@property (weak, nonatomic) IBOutlet UITextField *pwdField;
@property (weak, nonatomic) IBOutlet UIButton *btnLogin;
- (IBAction)btnLoginAction;

@end

@implementation LoginViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // 添加观察者
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(txtChange) name:UITextFieldTextDidChangeNotification object:self.nameField];
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(txtChange) name:UITextFieldTextDidChangeNotification object:self.pwdField];
}

- (void)txtChange {
    self.btnLogin.enabled = (self.nameField.text.length && self.pwdField.text.length);
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

// 点击了登录
- (IBAction)btnLoginAction {
    if (![self.nameField.text isEqualToString:@"admin"]) {
        [MBProgressHUD showError:@"账号不正确"];
        return;
    }
    if(![self.pwdField.text isEqualToString:@"123"]) {
        [MBProgressHUD showError:@"密码错误"];
        return;
    }
    // 显示遮罩
    [MBProgressHUD showMessage:@"加载中"];
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [MBProgressHUD hideHUD];
        // 根据关键字跳转
        [self performSegueWithIdentifier:@"toContact" sender:nil];
    });
}
@end





学习oc基础,看的是极客学院的视频教程。视频短小,肤浅,我不是在批评它们,这恰恰是初学者喜欢和适合的。刚接触就跟你讲点高深的知识会让初学者产生挫败感的,慢慢积累,慢慢深入。


零零散散地学了一些东西,在这里总结一下,归类。


字典

在java里面有一个很常用的知识,就是键值对。如下:

Map<String, String> map = new HashMap<>();
map.put("name", "xiaoming");
map.put("sex", "man");

在oc里面,类似map的数据结构叫做:字典。如下:

NSDictionary *dic = @{@"name":@"zhangsan", @"sex":@"man"};
NSLog(@"%@", dic);
NSLog(@"%@", [dic objectForKey:@"name"]);

数组

NSArray *arr = @[@"abc", @"def", @"aaa"];
for (int i = 0; i < [arr count]; i++) {
    NSLog(@"%@", [arr objectAtIndex:i]);
}


还有一种常用的方法是把字符串都放到一个配置文件中,需要的话再去里面读取。如图:


读取字符串的方法:

NSArray *arr = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"]];
    for (int i = 0; i<[arr count]; i++) {
        NSLog(@"%@", [arr objectAtIndex:i]);
    }

但是我死活读取不了,教程是使用的xcode5的版本,plist文件放入了项目的Supporting Files文件夹。我新建的osx的命令行项目,并没有这个文件夹,明天再把这个问题克服。

以上是oc里面的数组,很好看懂,常用的是可变长数组,明天再上。


Get,Set方法

新建一个People的类:


以上分别是.h和.m文件,使用的@property注入,就会自动生成好age的get和set方法。

再开看看调用:


帅,Java的get,set全靠自己写代码,或者编译器自动生成一大串方法。


工厂方法

名字听得让人生畏,但是也可以从java的世界里找到类似的语法。还是新建一个People的类:


上面分别上.h和.m文件,接下来看看如何调用:


十分类似于java的构造方法哈,但是老师也说了,只是类似,概念不一样。


好了,写累的,睡觉了,不停积累。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值